Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metod_informatika.doc
Скачиваний:
18
Добавлен:
02.04.2015
Размер:
13.85 Mб
Скачать

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

Размерностью массива называется количество его индексов. Например, массив размерностью два - двумерный массив - соответствует математическому понятию прямоугольной матрицы.

При описании многомерного массива размерность задается квадратными скобками, в которых указывается количество допустимых значений каждого индекса.

Примеры описания многомерных массивов.

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;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]