- подпрограммы-процедуры (Procedure) для оформления решения отдельных подзадач (например, поиска минимального элемента или вывода элементов на экран);
- дополнительные процедуры и функции модуля Crt для управления режимом отображения текста программы при ее выполнении.
Рекомендуется сначала отдельно написать и протестировать решение задачи, а затем оформить отдельные подзадачи как процедуры.
Общий алгоритм выполнения программы:
1. Запросить у пользователя размерность двумерного массива и способ заполнения (автоматически или с клавиатуры).
2. Заполнить массив заданной размерности случайными числами или числами, введенными пользователем с клавиатуры.
3. Вывести все элементы массива на экран построчно.
4. Решить основное задание, согласно варианту из таблицы 7.1 (например, найти максимальный элемент и обнулить строку, в которой он находиться).
5. Вывести результаты решения основного задания на экран.
6. Вывести обновленные значения элементов массива на экран.
При написании программы можно использовать примеры, приведенные в п. 6.3.
Таблица 7.1 – Варианты основных заданий
№
Основное задание
Найти максимальный элемент массива. Вывести все элементы строки, в которой он находится. Найти их сумму и среднее значение
Найти минимальный и максимальный элемент массива. Найти сумму всех элементов массива
Найти минимальный элемент массива. Все элементы массива разделить на значение минимального элемента
Найти максимальный элемент массива. Все элементы столбца, в котором он находится, обнулить
Найти среднее значение элементов массива. От значений элементов отнять среднее значение. Вывести отрицательные элементы массива на экран
Найти сумму элементов массива. Все элементы массива разделить на это значение. Найти максимальный элемент массива
Найти среднее значение элементов массива. От значений элементов отнять среднее значение. Найти минимальный элемент массива
Найти минимальный и максимальный элемент массива. Все элементы строк и столбцов, в которых они находятся обнулить
Найти среднее значение элементов массива. От значений элементов отнять среднее значение. Вывести положительные элементы массива на экран
Найти минимальный элемент массива. Все элементы строки и столбца, в котором он находиться обнулить
Пример:
Написать программу работы с массивом чисел, согласно варианту задания: найти максимальный элемент массива. Все элементы строки, в которой он находится, обнулить.
В программе использовать:
- подпрограммы-процедуры (Procedure) для оформления решения отдельных подзадач (например, поиска минимального элемента или вывода элементов на экран);
- дополнительные процедуры и функции модуля Crt для управления режимом отображения текста программы при ее выполнении.
Текст программы без использования процедур:
Program lab_7;
Uses crt;
Var
m, n, v, i, j, k, l: integer;
mass : array[1..10,1..10] of real;
max : real;
Begin
writeln('Выберите способ ввода:');
writeln('1 – Автозаполнение случайными числами');
writeln('2 – Заполнение числами, введенными с клавиатуры');
writeln('3 – Выход из программы');
readln(v);
if (v<>1) and (v<>2) then halt;
writeln('Введите число строк – m, m<10');
readln(m);
writeln('Введите число столбцов – n, n<10');
readln(n);
if v = 1 then
begin
randomize;
for i:=1 to m do
for j:=1 to n do
mass[i,j]:=random(100);
end
else if v=2 then
begin
for i:=1 to m do
for j:=1 to n do
begin
writeln('Введите элемент [',i,',',j,']');
readln(mass[i,j]);
end;
end
else exit;
for i:=1 to m do begin
for j:=1 to n do
begin
write(' [',i,',',j,']=',mass[i,j]:2:1);
end;
readkey;
end;
max:=mass[1,1]; k:=1; l:=1;
for i:=1 to m do
for j:=1 to n do
begin
if mass[i,j]>max then begin
max:=mass[i,j];
k:=i; l:= j;
end;
end;
writeln ('Максимальный элемент массива [',k,',',l,']=',max:2:2);
readkey;
for j:=1 to n do
mass[k,j]:=0;
for i:=1 to m do begin
for j:=1 to n do
begin
write(' [',i,',',j,']=',mass[i,j]:2:1);
end;
readkey;
end;
End.
Текст программы для такого же задания, но с использованием процедур, приведен ниже.
Program lab_7;
Var
i, j, k, l, m, n, v: integer;
mass : array[1..10,1..10] of real;
max : real;
Procedure autovvod_elementov;
Begin
randomize;
for i:=1 to m do
for j:=1 to n do
mass[i,j]:=random(100);
End;
Procedure vvod_elementov;
Var
i, j : integer;
Begin
for i:=1 to m do
for j:=1 to n do
begin
writeln('Введите элемент [',i,',',j,']');
readln(mass[i,j]);
end;
End;
Procedure max_element;
Begin
max:=mass[1,1]; k:=1; l:=1;
for i:=1 to m do
for j:=1 to n do
begin
if mass[i,j]>max then begin
max:=mass[i,j];
k:=i; l:= j;
end;
end;
writeln ('Максимальный элемент массива [',k,',',l,']=',max:2:2);
readln;
for j:=1 to n do
mass[k,j]:=0;
End;
Procedure vyvod_elementov;
Begin
for i:=1 to m do begin
for j:=1 to n do
begin
write(' [',i,',',j,']=',mass[i,j]:2:1);
end;
readln;
end;
End;
Begin
writeln('Выберите способ ввода:');
writeln('1 – Автозаполнение случайными числами');
writeln('2 – Заполнение числами, введенными с клавиатуры');
writeln('3 – Выход из программы');
readln(v);
if (v<>1) and (v<>2) then halt;
writeln('Введите число строк – m, m<10');
readln(m);
writeln('Введите число столбцов – n, n<10');
readln(n);
case v of
1: autovvod_elementov;
2: vvod_elementov;
end;
vyvod_elementov;
max_element;
vyvod_elementov;
End.
Результаты выполнения программы:
Выберите способ ввода:
1 – Автозаполнение случайными числами
2 – Заполнение числами, введенными с клавиатуры
3 – Выход из программы
Введите число строк – m, m<10
Введите число столбцов – n, n<10
[1,1]=8.0 [1,2]=32.0 [1,3]=58.0 [1,4]=64.0
[2,1]=26.0 [2,2]=38.0 [2,3]=21.0 [2,4]=15.0
Максимальный элемент массива [1,4]=64.00
[1,1]=8.0 [1,2]=32.0 [1,3]=58.0 [1,4]=64.0
[2,1]=26.0 [2,2]=38.0 [2,3]=21.0 [2,4]=15.0
8. СОДЕРЖАНИЕ ОТЧЕТА ПО ЛАБОРАТОРНОЙ РАБОТЕ
8.1. Результаты выполнения подготовительного задания: титульный лист, цель и задачи работы, краткие теоретические сведения.
8.2. Результаты выполнения лабораторных заданий, оформленные в виде листинга программы с указанием результата ее выполнения.
8.3. Выводы по результатам выполнения заданий и заключение по работе в целом.
КОНТРОЛЬНЫЕ ВОПРОСЫ
9.1. Какие типы данных Turbo Pascal 7.0 относятся к структурированным и какие особенности они имеют?
9.2. Дайте характеристику массивов?
9.3. Как описываются массивы в программах?
9.4. Как осуществляется доступ к элементам массива?