ЛАБОРАТОРНАЯРАБОТА
подисциплине “Основы программирования”
на тему
Алгоритмические языки: использованиепроцедур при работе с двумерными массивами
Цель работы:получение навыков работы с процедурами и двумерными массивами.
Постановказадачи:
1. Изучитьспособы описания и использования многомерных массивов, назначение процедур, ихописание и обращение к ним.
2. Разбитьзадачу соответствующего варианта на подзадачи, таким образом, чтобы решениекаждой подзадачи описывалось процедурой, а основная программа состояла изпоследовательности вызова процедур.
3. Программнореализовать алгоритмы.Заданиек работе:
1. Данаматрица n*m. В каждой Строке выбрать минимальный элемент, затем среди них найтинаибольший. Вывести индексы найденного элемента.
2. Набратьпрограмму, отладить ее, протестировать. Распечатать текст программы ирезультаты ее работы на тестовых данных.
Ходвыполнения работы
1.Блок-схема:
/>
/>
/>
/> -
/>
z:=b[1] y:=1 />/>/>/>
b[x]:=z />/>/>
z:=a[x,y]
c[i]:=y />+/> /> /> /> /> /> /> /> />
-
/>/>/>/>+
Рисунок 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]
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.