Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК ОАиП.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.14 Mб
Скачать

12. Решение задач на обработку элементов двумерного массива

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

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

В программировании матрицей называется переменная-массив, компонен­ты которой опять же массивы. Общий вид задания типа, определяющего дву­мерный массив, такой же, что и в случае, определяющем одномерный массив.

Можно, например, задать описание массива следующим образом:

Var

Map: Array [1..168, 1..9] of Byte;

задает двумерный массив, т. е. прямоугольную таблицу, состоящую из 168 строк и 9 столбцов.

Этот же массив можно задать иначе, непосредственно при описании полной переменной:

Var

Map: Array [1..168] of Array [1..9] of Byte;

Можно задать описание массива так:

Туре

Vector = Array [1..9] of Byte;

Var

Map: Array [1..168] of Vector;

Во всех трех случаях массив описан верно. В двумерном массиве доступ к любому из элементов осуществляется по двум индексам: номеру строки и номеру столбца, например:

Map [100], [7] или Map [100, 7] - это элемент, находящийся на пересече­нии сотой строки и седьмого столбца.

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

Многомерные массивы, как и одномерные, можно задавать одним из способов ввода данных в программу.

Значения элементов двумерных массивов выводят на экран и вводят с клавиатуры, как правило, по строкам, т. е. сначала все элементы первой стро­ки, затем второй и т. д. Это удобно выполнять при помощи вложенных инст­рукций for.

Программа Lab13_1 выводит на экран значения элементов массива по строкам.

Задача 1

Ввести в матрицу Prod размером 3 строки, 4 столбца следующие значения:

1-я СТРОКА - 1, 1, 1, 1;

2-я СТРОКА - 2, 2, 2, 2;

3-я СТРОКА - 3, 3, 3, 3.

Умножить на 3 каждый элемент массива и получить результат на экране дисплея распечатанным по строкам.

PROGRAM Lab12_1;

Uses Crt;

var

Prod : array [1..3, 1 ...4] of Integer;

i, j : Integer;

BEGIN {1}

ClrScr;

Textcolor(Yellow);

WriteLn(' **********Ввод по строкам **********');

Textcolor(Green);

For i: = 1 To 3 Do {Циклы ввода матрицы}

begin {2}

WriteLn (' Введи строку', i);

For j : =1 To 4 Do

Read(Prod [i, j]);

end; {2}

Textcolor (lightred);

WriteLn (‘*********** Вывод по строкам **********');

For i: =1 To 3 Do {Циклы вывода матрицы}

begin {3}

For j := 1 To 4 Do

Write (Prod [i, j]*3);

WriteLn;

end; {3}

ReadKey;

END. {1}

Пояснения к задаче 1

Каждый раз, когда внутренний цикл завершается, внешний цикл увели­чивает i на единицу и внутренний цикл выполняется вновь. Таким образом, сначала вводятся, а потом выводятся все компоненты массива по строкам. При выводе мы умножаем каждый элемент массива на 3.

При описании массивов в программе удобно использовать именованные константы как значения верхних границ индексов массива. При задании мас­сива как сложной константы в блоке Const (или в блоках, если их несколько) в круглых скобках перечисляются элементы-массивы, состоящие из элементов-скаляров. Для двумерного массива это может выглядеть так:

Const

a: Array [1..2,1..5] of Integer = ((-1,23,0, 7, 6), (2,0, -12,6,4));

Трехмерный массив можно задать аналогично или следующим образом:

Туре

Cube = Array [0..1,0..1,0..1] of Integer;

Const

M : Cube = (((0,1), (2,3)), ((4,5), (6,7)));

Элементы трехмерного массива будут хранить после этого следующие

М[0, 0, 0] = 0; М[0, 0, 1] = 1; М[0, 1, 0] = 2; М[0, 1, 1] = 3;

М[1,0, 0] = 4; М[1,0, 1] = 5; М[1, 1,0] =6; М[1, 1, 1] = 7.

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