Загрузил Елизавета Васильева

ВасильеваЕД, 2.1, ЛР12

реклама
Лабораторная работа №12
Многоступенчатые циклические вычислительные
процессы. Двумерные массивы.
Цель: научиться реализовывать многоступенчатые циклические вычислительные
процессы средствами Pascal.
Оборудование: Pascal, онлайн редактор, ПК.
Задание 1
Задача: найти сумму всех элементов массива 3x3. Массив задается явно
внутри программы. Найти максимальный элемент.
Блок схема:
Обозначение переменных:
Имя
A
I
J
Max
Sum
Смысл
Массив
Параметр цикла
Параметр цикла
Максимальный элемент
массива
Сумма элементов
Код программы:
Program Z1;
var
a : array [1..3,1..3] of integer;
i,j, max, sum : integer;
begin
randomize;
for i := 1 to 3 do begin
for j := 1 to 3 do begin
a[i,j] := random(100);
write(a[i,j],'
');
end;
writeln;
end;
max := 0;
for i := 1 to 3 do begin
for j := 1 to 3 do begin
if a[i,j] > max then max := a[i,j];
sum := sum + a[i,j];
end;
end;
writeln();
writeln('Максимальный элемент = ',max);
writeln('Сумма элементов массива = ',sum);
end.
Результат выполнения работы:
Тип
integer
Integer
integer
Integer
Integer
Задание 2
Задача: Дан массив 3x3. Найти сумму элементов на главной диагонали и
сумму элементов побочной диагонали.
Математическая модель:
n-i+1,
где n – размерность массива, I – номер строки.
Блок схема:
Обозначение переменных:
Имя
I
J
Sum
Sum2
Смысл
Параметр цикла
Параметр цикла
Сумма элементов на
главной диагонали
Сумма элементов на
побочной диагонали
Тип
integer
integer
integer
integer
Код программы:
program Z2;
var
a : array [1..3,1..3] of integer;
i,j, sum2, sum : integer;
begin
sum := 0;
sum2 := 0;
randomize;
for i := 1 to 3 do begin
for j := 1 to 3 do begin
a[i,j] := random(100);
write(a[i,j],'
');
end;
writeln;
end;
for i := 1 to 3 do begin
for j := 1 to 3 do begin
if i = j then sum := sum + a[i,j];
if j = (3-i+1) then sum2 := sum2 + a[i,j];
end;
end;
writeln();
writeln('Сумма элементов главной диагонали = ',sum);
writeln('Сумма элементов побочной диагонали = ',sum2);
end.
Результат выполнения работы:
Задание 3
Задача: Дан массив 3x3. Заменить элементы, стоящие ниже главной
диагонали нулями.
Математическая модель:
Если I>j , то A[I,j]:=0
Блок схема:
Обозначение переменных:
Имя
A
I
J
Смысл
Массив
Параметр цикла
Параметр цикла
Код программы:
program Z3;
var
a : array [1..3,1..3] of integer;
i,j : integer;
begin
randomize;
for i := 1 to 3 do begin
for j := 1 to 3 do begin
a[i,j] := random(100);
write(a[i,j],'
');
end;
writeln;
end;
writeln();
for i := 1 to 3 do
for j := 1 to 3 do
if i > j then a[i,j] := 0;
writeln('Замена');
for i := 1 to 3 do begin
for j := 1 to 3 do begin
write(a[i,j],'
');
end;
writeln;
end;
end.
Тип
Integer
Integer
Integer
Результат выполнения работы:
Задание 4
Задача: Дана матрица 3x3. Найти суммы элементов каждой строки и
упорядочить строки по возрастанию согласно их суммам
Блок-схема:
Обозначение переменных:
Имя
X
I
J
A
M
Смысл
Размер массива
Параметр цикла
Параметр цикла
Параметр цикла
Массив
Код программы:
const x=3;
var i,j,s,a,k:integer;
M:array[1..8,1..8] of integer;
begin
for i:=1 to x do begin
s:=0;
for j:=1 to x do begin
Тип
Integer
Integer
Integer
Integer
Integer
readln(M[i,j]);
s:=s+M[i,j];
end;
M[i,x+1]:=s;
end;
writeln('исходная матрица:');
writeln(' сумма элементов': (x*10+30));
for i:=1 to x do begin
for j:=1 to x+1 do
if j=x+1 then
write(M[i,j]:8)
else
write(M[i,j]:5);
writeln;
end;
for i:=1 to x-1 do
for a:=i+1 to x do
if M[i,x+1]>M[a,x+1] then
for j:=1 to x+1 do begin
k:=M[i,j];
M[i,j]:=M[a,j];
M[a,j]:=k;
end;
writeln('строки, упорядоченные по возрастанию');
writeln(' сумма элементов': (x*10+30));
for i:=1 to x do begin
for j:=1 to x+1 do
if j=4 then
write(M[i,j]:8)
else
write(M[i,j]:5);
writeln;
end;
end.
Результат выполнения работы:
Анализ результатов:
программа считает суммы строк матрицы и выводит их по возрастанию относительно суммы.
Вывод:
написали программы с использованием многоступенчатых циклических вычислительных процессов для
решения предложенных задач.
Скачать