Двумерный массив
Двумерный массив - это массив, у каждого элемента которого два индекса (часто такие массивы называют одним словом - матрица).
В матрице удобно хранить и обрабатывать различные табличные данные. Как любая таблица состоит из строк и столбцов, так и матрицы состоят из строк и столбцов.
Для наглядности Вы можете представлять массив следующим образом:
Хотя, фактически в памяти компьютера матрица будет выглядеть следующим образом:
Чтобы использовать матрицу в программе, ее необходимо так же как и обычный массив объявить, указывая тип данных и два размера (числами или константами). Также можно (и желательно) сразу задать начальные значения. Например, обнулить все элементы.
Пример 1: Объявление массива размером 3 строки и 3 столбца с произвольными начальными значениями
int A[3][3] = { {0,1,2},
{3,4,5},
{6,7,8} };
Пример 2: Объявление массива размером 5 строк и 10 столбцов (размер задаем через константу) с нулевыми начальными значениями
const int N = 5, M = 10;
double B[N][M] = {};
Для обращения к конкретному элементу матрицы используем две пары скобок, в первой скобке указываем номер строки, во второй - номер столбца.
Пример:
A[0][2] = 100; //нумерация строк и столбцов начинается с нуля
Заполнение матрицы и вывод ее на экран
Для того, чтобы обойти всю матрицу необходим вложенный цикл. Посмотрим заполнение и вывод матрицы на примере программы, которая запрашивает значения элементов с клавиатуры и просто выводит заполненную матрицу на экран.
#include <iostream>
using namespace std;
int main() {
/* Объявление двумерного массива*/
const int N = 2, M = 3;
int A[N][M];
/*заполняем элементы матрицы с клавиатуры построчно*/
int i, j;
for (i = 0; i < N; i++)
for (j = 0; j < M; j++)
cin >> A[i][j];
//Вывод всех элементов матрицы на экран построчно
for (i = 0; i < N; i++) { //внешний цикл отвечает за перебор строк
for (j = 0; j < M; j++) //цикл для вывода элементов строки
cout << A[i][j] << " ";
cout << endl; //после вывода элементов j-й строки делаем переход на новую строку
}
return 0;
}
В вышеприведенном примере, как заполнение, так и вывод матрицы происходит по строчкам (сначала мы перебираем все значения
j - индекс столбцов, и только потом меняется индекс строки -
i)
Меняя циклы местами (внутренний с внешним) можно осуществлять заполнение и/или вывод массива по столбцам