
- •Лабораторная работа №6
- •1. Теоретическая часть
- •1.1. Описание двумерных массивов в языке программирования Pascal.
- •1.2. Ввод и вывод двумерных массивов в языке программирования Pascal.
- •1.3. Основные алгоритмы обработки двумерных массивов.
- •1.4 Пример составления алгоритма и программы на языке Pascal для обработки двумерного массива.
- •2. Практическая часть
- •2.1 Требования к выполнению работы:
- •2.2 Варианты индивидуальных заданий.
- •2.3 Контрольные вопросы и практические задания:
Лабораторная работа №6
“Обработка двумерных массивов (матриц)”
Цель работы: Освоение методов обработки двумерных массивов (матриц), ввода и вывода их на печать, нахождения и использования их параметров, а также разработки алгоритмов, построения и отладки программ, выполняющих обработку матриц.
1. Теоретическая часть
1.1. Описание двумерных массивов в языке программирования Pascal.
Аналогично одномерным массивам, двумерные массивы могут объявляться непосредственно в разделе описания переменных var, а могут через раздел описания типов type. При этом для объявления двумерных массивов существует полная и сокращенная запись:
1. Полная:
A:array[1..10] of array[1..6] of тип;
где [1..10] – информация о строках,
[1..6] – информация о столбцах.
2. Сокращенная:
Var A:array[1..10,1..6] of тип;
Обращение к элементам двумерного массива в программе происходит по индексу, например:
X[i,j]
X[i,5]
X[1,j]
X[3+i*5,2*j]
Для работы с двумерными массивами в программе, как правило, необходимо организовывать два счетных цикла: один должен перебирать все строки, а второй должен перебирать все столбцы. При этом в качестве счетчиков цикла должны использоваться разные переменные. Например, если в двумерном массиве N строк и M столбцов, то для работы с элементами массива можно организовать два цикла:
for i:=1 to N do
for j:=1 to M do
В теле цикла обращение к элементу массива, который находится в i–й строке и j–м столбце, происходит как A[i,j].
1.2. Ввод и вывод двумерных массивов в языке программирования Pascal.
1. Ввод элементов осуществляется аналогично вводу элементов одномерного массива, за исключением того, что вместо одного цикла необходимо организовать два (по строкам и по столбцам):
for i:=1 to N do
begin
for j:=1 to M do
begin
writeln(‘введите элемент a[’,i,’,’,j,’]’);
read(a[i,j]);
end;
end;
где N – количество строк в двумерном массиве a;
M – количество столбцов.
Можно также организовать формирование элементов массива с помощью генератора случайных чисел random:
for i:=1 to N do
for j:=1 to M do
a[i,j]=random(100);
2. Вывод элементов двумерного массива на экран:
for i:=1 to N do
for j:=1 to M do
writeln(a[i,j]);
В этом случае каждый элемент массива будет выводиться на экран с новой строки.
Чтобы при выводе матрицы каждая ее строка выводилась на экран с новой строки, необходимо перед внутренним циклом добавить writeln:
for i:=1 to N do
begin
writeln;
for j:=1 to M do
write(a[i,j]);
end;
1.3. Основные алгоритмы обработки двумерных массивов.
Обработка двумерных массивов (т.е. поиск максимального, минимального элементов массива, суммы, произведения, среднего арифметического значения элементов массива) осуществляется аналогично обработке элементов одномерного массива, за исключением того, что вместо одного цикла необходимо организовать два.
При обработке элементов матриц, которые находятся на главной диагонали, необходимо учитывать, что в их индексах номер строки равен номеру столбца. Например, в следующем фрагменте программы выполняется нахождение суммы элементов матрицы, которые находятся на главной диагонали:
S:=0;
for i:=1 to N do
S:=S+A[i,i];
Если необходимо выполнить обработку матрицы по столбцам, тогда во внешнем цикле организовывается перебор столбцов, а во внутреннем – перебор строк:
for j:=1 to M do
for i:=1 to N do