ЛАБОРАТОРНАЯ РАБОТА
по дисциплине “Основы программирования”
на тему
Алгоритмические языки: использование процедур при работе с двумерными массивами
Цель работы: получение навыков работы с процедурами и двумерными массивами.
Постановка задачи:
1. Изучить способы описания и использования многомерных массивов, назначение процедур, их описание и обращение к ним.
2. Разбить задачу соответствующего варианта на подзадачи, таким образом, чтобы решение каждой подзадачи описывалось процедурой, а основная программа состояла из последовательности вызова процедур.
3. Программно реализовать алгоритмы.
Задание к работе:
1. Дана матрица n*m. В каждой Строке выбрать минимальный элемент, затем среди них найти наибольший. Вывести индексы найденного элемента.
2. Набрать программу, отладить ее, протестировать. Распечатать текст программы и результаты ее работы на тестовых данных.
Ход выполнения работы
1. Блок-схема:
-
+
-
+
Рисунок 1. Блок-схема программы
2. Текст программы
Program lab52;
Const
max=10;
Type
mat=array[1..max] of array[1..max] of integer;
Var
a:mat;
b:array[1..max] of integer;
c:array[1..max] of Byte;
i,j:byte;
procedure vvod_m(Var a:mat;Var i,j:Byte);
Var x,y:byte;
Begin
Writeln('Введите мерность матрици ');
Write('i='); readln(i);
Write('j='); readln(j);
Writeln('Введите массив:');
for x:=1 to i do
for y:=1 to j do
Begin
write('a[',x,',',y,']=');
readln(a[x,y])
End
End;
Procedure Proc(a:mat;i,j:byte);
Var
b:array[1..max] of integer;
c:array[1..max] of Byte;
x,y:byte;
z:integer;
Begin
for x:=1 to i do
Begin
z:=a[x,1];
c[i]:=1;
for y:=2 to j do
if a[x,y]<z then
Begin
z:=a[x,y];
c[i]:=y
End;
b[x]:=z;
End;
z:=b[1];
y:=1;
for x:=2 to i do if b[x]>z then
Begin
z:=b[x];
y:=x
End;
Writeln('Искомый элемент-a[',y,',',c[y],']=',a[y,c[y]]);
End;
Begin
vvod_m(a,i,j);
Proc(a,i,j)
End.
3. Результаты работы:
1. Тест №1.
Искомый элемент - a[2,1]=3.
Рисунок 2. Результат теста №1.
2. Тест №2.
Искомый элемент - a[3,1]=2.
Рисунок 3. Результат теста №2.