шаблоны сайт визитка joomla
Скачать шаблоны Joomla 3.5 бесплатно
Вы находитесь здесь:Главная»Учебные материалы»C ++»C++. Двумерные и одномерные массивы

C++. Двумерные и одномерные массивы

Одномерный массив

Массив представляет нечто целое, что содержит целый набор однотипных пронумерованных элементов. Почти вся обработка массивов заключается в обработке его элементов. Для прохода по массивам используют циклы. В С++ у массива отсчет всегда идет от нуля, поэтому первый элемент массива имеет индекс ноль

Задание одномерного массива:

int a[16];  // 

int a[16] = { 5, -12, -12, 9, 10, 0, -9, -12, -1, 23, 65, 64, 11, 43, 39, -15 };  

 В первом случае - просто задание массива, во втором же мы сразу задаем и заполняем массив элементами - т.е. инициализируем его. В данном примере:  int — целочисленный тип данных;   а —  имя одномерного массива;   16 — размер одномерного массива, 16 ячеек.

 А вот в этом случае компиллятор сам определяет размерность массива:
int a[]={5,-12,-12,9,10,0,-9,-12,-1,23,65,64,11,43,39,-15};

Пример программы: 

Напишем программу, которая должна последовательно считывать десять введённых чисел с клавиатуры. Все эти числа нужно сложить, а результат вывести на экран.

// array_sum.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h"
#include <iostream>

using namespace std;

int main(int argc, char* argv[])

{
    int array1[10]; // объявляем целочисленный массив
    cout << "Enter elementi massiva: " << endl;
    int sum = 0;
    for int counter = 0; counter < 10; counter++ ) // цикл для считывания чисел
        cin >> array1[counter];  // считываем вводимые с клавиатуры числа
    cout << "array1 = {";
    for int counter = 0; counter < 10; counter++ ) // цикл для вывода элементов массива
        cout << array1[counter] << " ";  // выводим элементы массива на стандартное устройство вывода
    for int counter = 0; counter < 10; counter++ ) // цикл для суммирования чисел массива
        sum += array1[counter]; // суммируем элементы массива
    cout << "}\nsum = " << sum << endl;
    system("pause");
    return 0;
}

Двумерные массивы

 Иногда необходимо храненить данные в виде некоторых таблиц (матрицы), в определенном формате строк и столбцов. Тогда мы и используем двумерные массивы. Если одномерный массив можно представить в виде некоторой "ленты"-последовательности элементов, то двумерный массив будет выглядеть примерно так:

 double mass c plus plus

Зесь  m — количество строк двумерного массива;   n — количество столбцов двумерного массива;   m * n — количество элементов массива.

Задание двумерного массива:

 int m [3] [4] ;   // задаем массив размерности 3 на 4

Задачи на одномерные и двумерные массивы в C++:

Задача 1. Рассмотрим одну из простейших задач.  Пусть нужно создать матрицу N x N и заполнить ее случайными числами, после чего вывести ее на экран. Размерность N считывается с клавиатуры.

#include "stdafx.h"
#include <stdlib.h>
#include <time.h>
#include <stdio.h> 


int _tmain(int argc, _TCHAR* argv[])
{
int Matrix[255][255];
printf("Enter N: ");
int N;
scanf("%d", &N);
srand(time(NULL));
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
Matrix[i][j] = rand()%100;
printf("%d ", Matrix[i][j]);
}
printf("\n");
}
return 0;
}
 

Задача 2. Необходимо заполнить матрицу нулями, кроме главной и побочной диагонали.

#include "stdafx.h"
#include "locale.h"
#include "stdlib.h"
 
void main()
{
int matrix[255][255], N=0, razn = 1;
setlocale(0,"Russian");
printf("Введите размер матрицы: \n");
scanf("%d",&N);
razn = N;
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
if(i==j || j==N-i-1)
{
matrix[i][j]=rand()%9;
}
else
{
matrix[i][j]=0;
}
printf("%d ",matrix[i][j]);
if(j==N-1)
{
printf("\n");
}
}
}
}

 

Задача 3. Заполнить массив с клавиатуры. Найти его наименьший положительный элемент и его индекс. Вывести результат на экран.

#include <iostream>

using namespace std;

const   int ARR_SIZE = 5;

int main()
{ setlocale(LC_CTYPE, "Russian");
   int i, X[ARR_SIZE];
   cout << "Заполните массив." << endl;
   for (i = 0; i < ARR_SIZE; i++)
           { cout << "Введите значение № " << i + 1 << ": ";
              cin >> X[i];
            }
   int Xmin = -1, min = -1;
   for (i = 0; i < ARR_SIZE; i++)
            { if (X[i] > 0)
                    { if (min < 0)     { Xmin = X[i]; min = i; }
             else {  
                       if (X[i] < Xmin) { Xmin = X[i]; min = i;
                                                       }
                         }
                     }
                 }
     if (min < 0)
              { cout << "Наим. полож. элемент отсутствует" << endl; } 
     else { cout << "Наим. полож. элемент: " << X[min] << endl << "Его номер: " << min + 1 << endl; }
    return0;
}

 

Задача 4. Проверить, есть ли в матрице хотя бы один столбец, содержащий элемент, равный нулю, и найти его номер. А также, проверить, есть ли в матрице хотя бы одина строка, содержащая элемент, равный нулю, и найти ее номер.

#include <iostream>
using namespace std;
void main()
{
  int arr[5][5]={1,0,3,4,5,
  1,2,3,4,5,
  1,2,3,4,5,
  1,2,3,4,5,
  1,2,3,4,5
};
 for (int i = 0; i < 5; i++)
for (int j = 0; j < 5; j++)
 {
  //Если есть 0 в столбце
  if ( arr[i][j] == 0 ) cout << "0 v stolbce: " << j + 1 << '\n'; 
  //Если есть 0 в строке
  if ( arr[i][j] == 0 ) cout << "0 v stroke: " << i + 1 << '\n'; 
  }
}

 

Задача 5. Выполнить сложение квадратных матриц (двумерных массивов) размерностью 5

#include <iostream>
using namespace std;
int main()
{
int  a[5][5];
for (int i=0; i<5; i++) {
  for (int j=0; j<5; j++) {
     a[i][j] = rand()%10+50;
     cout<<a[i][j]<<" ";   }
  cout<<endl;  }
system("pause");
return 0;
}

 

Задача 6. Найти номера всех элементов одномерного массива с максимальным значением.

#include <stdio.h>
int main(int argc, char * argv [])
{
const short N = 10;
int mas[N] = {58, 7, 476, 47, 7, 4, 954, 89, 4, 477};
int max = mas[0], maxElem = 1;

for(int i = 1; i < N; i++)
{
if(mas[i] > max)
{
max = mas[i];
maxElem = i + 1;
}
}
printf("Maximal element for array: %d\n", maxElem);
return 0;
}


Задача 7. Циклично сдвинуть одномерный массив влево на число, введенное с клавиатуры.

#include <iostream>
using namespace std;
int main()
{ int M[]={1,2,3,4,5,6,7,8,9,0};       //Наш массив
  int len = sizeof(M) / sizeof(M[0]);        //Кол-во элементов в массиве
  int N = 8;          //Сдвиг влево на N элементов
  int temp=0;         //Нужно будет запоминать 1 элемент в памяти, чтобы его не стереть
  for (int i=0; i<len; i++) cout<<M[i]<<" ";
  cout<<"\n";
  for (int step=1; step<=N; step++)            //Цикл для сдвига влево на N элементов
  {
  temp=M[0];            //Запоминаем первый элемент массива, чтобы не затереть его окончательно
  for (int i=0; i<len-1; i++)            //Цикл в цикле выполняет сдвиг ММассива влево на 1 элемент
  {
  M[i] = M[i+1];              //Помещаем в текущий элемент следующий за ним
    }
  M[len-1] = temp;            //Вне цикла дописываем сохраненное изначально значение в последний элемент массива
   }
  for (int i=0; i<len; i++) cout<<M[i]<<" ";                //Выводим массив на экран
  return 0;
}

 

Похожие материалы (по тегу)

Новости о нас

Расписание занятий для каждой сформированной группы по робототехнике на 2017-2018 учебный год. Подробнее
Учебный год начался, и у нас очередная радостная новость для вас, педагоги! В этом году... Подробнее
Наши учащиеся выступили на августовской конференции педагогов! Подробнее
Хочешь учиться в Толтеке по выгодной цене? Приводи друзей и получай большие скидки!... Подробнее
19 августа в ТРЦ Сити Молл с блеском прошел РобоКвест! Героями квеста стали более сотни... Подробнее

Наши партнеры

 TZOyoOCZ8y0 logotip novy SF BashGU  utv logo  CityMoll  VolnoeDelo