Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика программирование, учебник.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
22.08 Mб
Скачать

6 Двумерные числовые массивы

Ранее были рассмотрены массивы, каждый элемент которых однозначно определялся одним индексом – вектора. В программировании часто используются многомерные массивы, т.е. массивы, содержащие два или более индексов.

В математике широко распространены двумерные массивы, называемые матрицами. В двухмерном числовом массиве пользуются понятиями трех типов: строки, столбцы и компоненты (элементы), то есть числа, располагающиеся на пересечении строк и столбцов. Строки и столбцы пронумерованы. Номером строки является первый индекс массива, номером столбца второй. Компоненты идентифицируются двумя индексами: номером строки и номером столбца.

Например, матрица размером «3 на 4» состоит из 3-х строк и 4-х столбцов. Если всю матрицу обозначить некоторым именем, например В, то для обращения к элементу матрицы надо указать ее имя с двумя индексами: В[I,J], и здесь I – номер строки, J – номер столбца.

В этой матрице элемент B[2,3]=1.

Матрицы, аналогично векторам, описываются в разделе описаний переменных программы. Описание матрицы имеет следующую структуру:

VAR <ИмяМассива>:ARRAY

[<НачЗначПервогоИндекса>..<КонЗначПервогоИндекса>,

<НачЗначВторогоИндекса>..<КонЗначВторогоИндекса>]

OF <ТипЭлементов>;

Приведенная выше матрица будет описана следующим образом:

VAR B: ARRAY [1..3, 1..4] OF INTEGER;

Работа с элементами двумерного массива производится с помощью вложенных циклов, например, обнуление элементов массива будет произведено следующим образом:

FOR I:=1 TO 3 DO

FOR J:=1 TO 4 DO B[I,J]:=0;

В этом разделе необходимо разработать алгоритм и составить программу обработки числовых компонентов двухмерного массива в соответствии с приведенными ниже заданиями. Исходный массив вводить с клавиатуры, затем осуществить контрольный вывод введенного массива в виде матрицы, элементы которой должны быть разделены пробелами. Каждую строку массива следует вводить и выводить на новой строке монитора. Результирующий массив выводить так же в виде матрицы.

Для примера рассмотрим решение следующей задачи:

В целой матрице, состоящей из 3-х строк и 5-ти столбцов, строку, содержащую наибольший элемент, поменять местами с последней строкой.

Решение этой задачи распадается на следующие этапы:

  • ввод исходной матрицы;

  • вывод введенной исходной матрицы;

  • поиск наибольшего элемента и его местоположения;

  • замена местами последней строки и строки, содержащей наибольший элемент;

  • вывод результирующей матрицы.

PROGRAM MATRICA;

VAR A: ARRAY [1..3, 1..5] OF INTEGER;

AMAX,IMAX,I,J,X: INTEGER;

BEGIN

{ввод исходной матрицы}

FOR I:=1 TO 3 DO

FOR J:=1 TO 5 DO

BEGIN

WRITE(‘ENTER A[’,I,J’]=’);

READLN(A[I,J]);

END;

{контрольный вывод введенной матрицы}

WRITELN(‘INITIAL ARRAY’);

FOR I:=1 TO 3 DO

BEGIN

FOR J:=1 TO 5 DO WRITE(A[I,J]:6);

WRITELN;

END;

{поиск наибольшего элемента матрицы}

AMAX:=A[1,1]; IMAX:=1;

FOR I:=1 TO 3 DO

FOR J:=1 TO 5 DO

BEGIN

IF A[I,J]>AMAX THEN BEGIN

AMAX:=A[I,J];

IMAX:=I;

END;

END;

{замена местами строк}

FOR J:=1 TO 5 DO

BEGIN

X:=A[IMAX,J];

A[IMAX,J]:=A[3,J];

A[3,J]:=X;

END;

{вывод результирующей матрицы}

WRITELN(‘RESULT ARRAY’);

FOR I:=1 TO 3 DO

BEGIN

FOR J:=1 TO 5 DO WRITE(A[I,J]:6);

WRITELN;

END;

END.