Многомерные массивы


В предыдущих руководствах по массивам , мы рассмотрели, хорошо, массивы и как они работают. Все рассматриваемые нами массивы были одномерными, но C может создавать и использовать многомерные массивы. Вот общая форма объявления многомерного массива:

type name[size1][size2]...[sizeN];

Например, вот базовый, на который вы можете взглянуть -

int foo[1][2][3];

а может этот -

char vowels[1][5] = {
    {'a', 'e', 'i', 'o', 'u'}
};

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

Простейшей формой многомерного массива является двумерный массив. Двумерный массив - это в значительной степени список одномерных массивов. Чтобы объявить двумерный целочисленный массив размера [x] [y], вы должны написать что-то вроде этого:

type arrayName [x][y];

Где type может быть любым типом данных C (int, char, long, long long, double и т. Д.), А arrayName будет действительным идентификатором C или переменной. Двумерный массив можно рассматривать как таблицу, в которой будет [x] количество строк и [y] количество столбцов. Двумерный массив a, содержащий три строки и четыре столбца, можно показать и представить себе так:

Таблица 1A

В этом смысле каждый элемент в массиве a идентифицируется именем элемента в форме a [i] [j] , где «a» - это имя массива, а «i» и «j» - это индексы, которые однозначно идентифицировать или показывать каждый элемент в 'a'.

И, честно говоря, вам действительно не нужно вводить значение [x], потому что если вы сделаете что-то вроде этого -

char vowels[][5] = {
    {'A', 'E', 'I', 'O', 'U'},
    {'a', 'e', 'i', 'o', 'u'}
};

компилятор уже знает, что есть два "измерения", которые вы могли бы сказать, но вам нужно НУЖНО значение [y] !! Компилятор может быть умным, но он не будет знать, сколько целых чисел, символов, чисел с плавающей запятой, что бы вы ни использовали, у вас есть в измерениях. Запомни.

Инициализация двумерных массивов

Можно использовать многомерные массивы, указав значения в квадратных скобках [] для каждой строки. Ниже представлен массив с 3 строками, в каждой строке по 4 столбца. Чтобы упростить задачу, вы можете забыть о 3 и оставить поле пустым, он все равно будет работать.

int a[3][4] = {  
   {0, 1, 2, 3} ,   /*  initializers for row indexed by 0 */
   {4, 5, 6, 7} ,   /*  initializers for row indexed by 1 */
   {8, 9, 10, 11}   /*  initializers for row indexed by 2 */
};

Внутренние фигурные скобки, обозначающие нужную строку, необязательны. Следующая инициализация аналогична предыдущему примеру -

int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};

Доступ к двумерным элементам массива

Доступ к элементу в двумерном массиве осуществляется с помощью индексов, т. Е. Индекса строки и индекса столбца массива. Например -

int val = a[2][3];

Вышеупомянутый оператор возьмет 4-й элемент из 3-й строки массива.

Упражнение

Попробуем узнать средние оценки группы из пяти студентов по двум предметам - математике и физике. Для этого мы используем двумерный массив с именем grades. Отметки, соответствующие математике, будут храниться в первой строке ( ), тогда как отметки, соответствующие физике, будут сохранены во второй строке ( ). Выполните следующие шаги, чтобы запустить эту программу.grades[0]grades[1]

  • Объявить оценки как двумерный массив целых чисел
  • Завершите цикл for, указав условия их завершения
  • Вычислить средние оценки, полученные по каждому предмету