Описание двухмерного массива

Описание матрицы задается структурным типом вида:

<тип элементов><имя> [m][ n] ;

где m – количество строк;

n –количество столбцов матрицы.

По описанию матрицы во внутренней памяти компьютера выделяется область из т Описание двухмерного массива - student2.ru п последовательных ячеек, в которые при работе программы записываются значения элементов матрицы. Например, по описанию:

float A [3][5];

В памяти компьютера для элементов матрицы выделяется область, состоящая из 3 Описание двухмерного массива - student2.ru 5=15 последовательных ячеек вещественного типа. Из описания видно, что матрица состоит из трех строк и пяти столбцов.

Обращение к отдельным элементам матрицы осуществляется с помощью переменной с двумя индексами, причем индексы, как и для одномерного массива начинаются с нуля. Например:

А[i][j] Описание двухмерного массива - student2.ru aij;

А[2][3] Описание двухмерного массива - student2.ru a23;

А[2*n][k+1] Описание двухмерного массива - student2.ru a2n,k+1.

Ввод-вывод двухмерного массива

Для поэлементного ввода и вывода матрицы используется двойной цикл for.... Если задать индекс i как параметр внешнего цикла, а индекс j как параметр внутреннего цикла, то ввод-вывод матрицы осуществляется построчно.

Пример 1.Организовать ввод целочисленной матрицы М по строкам.

Описание двухмерного массива - student2.ru

Описание матрицы вместе с текущими индексами имеет вид:

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++)

<тело цикла>;

}

Нижерассмотрены примеры программирования задач каждого типа.

Наши рекомендации