Лабораторная работа №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. Результат выполнения работы: Анализ результатов: программа считает суммы строк матрицы и выводит их по возрастанию относительно суммы. Вывод: написали программы с использованием многоступенчатых циклических вычислительных процессов для решения предложенных задач.