Описание двухмерного массива
Описание матрицы задается структурным типом вида:
<тип элементов><имя> [m][ n] ;
где m – количество строк;
n –количество столбцов матрицы.
По описанию матрицы во внутренней памяти компьютера выделяется область из т п последовательных ячеек, в которые при работе программы записываются значения элементов матрицы. Например, по описанию:
float A [3][5];
В памяти компьютера для элементов матрицы выделяется область, состоящая из 3 5=15 последовательных ячеек вещественного типа. Из описания видно, что матрица состоит из трех строк и пяти столбцов.
Обращение к отдельным элементам матрицы осуществляется с помощью переменной с двумя индексами, причем индексы, как и для одномерного массива начинаются с нуля. Например:
А[i][j] aij;
А[2][3] a23;
А[2*n][k+1] a2n,k+1.
Ввод-вывод двухмерного массива
Для поэлементного ввода и вывода матрицы используется двойной цикл for.... Если задать индекс i как параметр внешнего цикла, а индекс j как параметр внутреннего цикла, то ввод-вывод матрицы осуществляется построчно.
Пример 1.Организовать ввод целочисленной матрицы М по строкам.
Описание матрицы вместе с текущими индексами имеет вид:
int main()
{
int М[2][3] ;
int i, j;
Ввод в программе реализуется в форме диалога, т.е. сопровождается поясняющим сообщением:
printf("Введите матрицу М\n");
for( i = 0; i<2; i++)
for( j = 0; j< 3; j++)
scanf("%f",&m[i][ j]);
На клавиатуре желательно для наглядности восприятия набирать элементы матрицы по строкам, отделяя числа друг от друга одним или несколькими пробелами:
1 2 3 [Enter]
4 5 6 [Enter]
Пример 2.Организовать вывод матрицы М на экран.
Вывод матрицы необходимо реализовать в удобном для чтения виде, т.е. чтобы на одной строке экрана располагалась одна строка матрицы. С этой целью в тело внешнего цикла, помимо внутреннего цикла, включается оператор printf, который переводит курсор к началу следующей строки экрана после вывода текущей строки матрицы.
for ( i = 0; i<2; i++)
{
for ( j = 0; j< 3; j++)
printf("%3d ",m[i][j]);
printf("\n");
}
Вид матрицы на экране будет следующим:
1 2 3
4 5 6
Обработка матриц
Базовыми алгоритмами обработки матриц являются те же алгоритмы, которые используются при обработке одномерных массивов. Однако реализацию этих алгоритмов можно условно рассматривать для двух типов задач.
1. Алгоритмы реализуются при просмотре всех элементов матрицы (просмотр может быть с условием). Начальная установка алгоритма выполняется перед двойным циклом. В этом случае запись операторов цикла для параметров i и j осуществляется последовательно друг за другом и имеет вид:
<начальная установка искомых параметров>
for (i = 0; i<n; i++)
for (j = 0; j< n; j++)
<тело цикла>;
2. Алгоритмы реализуются внутри каждой строки или каждого столбца матрицы. В этом случае начальная установка алгоритма выполняется между операторами цикла, записанными для параметров i и j. Например, если алгоритм реализуется для каждой строки, то запись в программе имеет следующий вид:
for ( i = 0; i< m ; i++)
{
<начальная установка искомых параметров>
for ( j = 0; j< n; j++)
<тело цикла>;
}
Нижерассмотрены примеры программирования задач каждого типа.