Многомерные массивы
Размерностью массива называется количество его индексов. Например, массив размерностью два - двумерный массив - соответствует математическому понятию прямоугольной матрицы.
При описании многомерного массива размерность задается квадратными скобками, в которых указывается количество допустимых значений каждого индекса.
Примеры описания многомерных массивов.
int mas[3][4]; //описание целочисленного двумерного массива
//из 3-х строк и 4-х столбцов
const int N = 5;
double A[2*N][2*N]; //описание двумерного вещественного массива
//A размером 10x10 элементовint B[2][4][2]; //описание трехмерного целочисленного
//массива B
Примечание.
Стандарт языка С++ не накладывает ограничения на размерность массива, но каждый компилятор задает максимальное количество индексов массива. На практике обычно используются массивы размерностью не более трех.
Для доступа к элементу многомерного массива после имени в квадратных скобках указываются все его индексы. Например, mas[i][j] или
А[0][0].
Для инициализации многомерного массива каждый элемент-массив заключается в свои фигурные скобки, либо задается общий список элементов в том порядке, в котором элементы располагаются в памяти.
Например,
int mas[3][4] = { {0, -1, 2, -7}, {9, 7, 5, 8}, {3, 0, 1, -6} };
или
int mas[3][4] = {0, -1, 2, -7, 9, 7, 5, 8, 3, 0, 1, -6};
Элементы многомерного массива размещаются в оперативной памяти в последовательных ячейках построчно. Поэтому многомерные массивы быстрее просматриваются по строкам, а не по столбцам. Для просмотра используются вложенные циклы. Быстрый просмотр массива будет обеспечен, если первый индекс будет изменяться во внешнем цикле, а последний индекс - во внутреннем цикле.
Рассмотрим работу с двумерными массивами на следующих примерах. Пример 1. Ввод и вывод элементов двумерного массива
const int kolStr = 3, kolStb = 4;
int i, j, mas[kolStr][kolStb] = {0};
// ввод элементов массива
for (i = 0; i < kolStr; i++)
{
for (j = 0; j < kolStb; {
cout << "mas[" << i << "][" << j << "] = ";
cin >> mas[i][j];
}
cout << " \n";
}
//вывод элементов массива
for (i = 0; i < kolStr; i++)
{
for (j = 0; j < kolStb; j++)
cout << mas[i][j] << '\t'; cout << '\n';
}
Пример 2. Вычисление суммы всех элементов матрицы
sum = 0;
for (i = 0; i < kolStr; i++)
for (j = 0; j < kolStb; sum += mas[i][j];
Пример 3. Поиск максимального элемента матрицы
max = mas[0][0];
for (i = 0; i < kolStr; i++)
for (j = 0; j < kolStb;
if (mas[i][j] > max) max = mas[i][j];
Пример 4. Дан двумерный массив mas. Составить вектор b такой, что
а) bi - максимальный элемент i-й строки
for (i = 0; i < kolStr; i++)
{
max = mas[i][0];
for (j = 0; j < kolStb;
if (mas[i][j] > max) max = mas[i][j]; b[i] = max;
}
б) bi - среднее арифметическое отрицательных элементов текущей строки
double s; int k;
for (i = 0; i < kolStr; i++)
{
k = 0; s = 0;
for (j = 0; j < kolStb; j++) if (mas[i][j] < 0)
{
s +=mas[i][j]; k++;
}
b[i] = s/k;
}