Главная Учебники - Разные Лекции (разные) - часть 32
|
Цель работы:
Изучение правил
описания и
вызова подпрограмм:
процедур и
функций. Получение
навыков и овладение
приемами работы
над подпрограммами.
Задание№ 17.
Посчитать сумму
элементов
лежащих выше
главной диагонали
матрицы для
матрицы Z=X2+Y2.
Программа на
Turbo Pascal {Программа:
Kyrsaсh
} {Цель:
Найти сумму
элементов выше
главной диагонали
} {Переменные:
} {
X,Y
- вводимые
массивы
} {
N, M, A,B,
Z
- промежуточные
массивы
} {
t
- Размер массива
} {
i, j - переменные
цикла
} {Программист:
Позднышев А.А.
группа 316
} {Проверил:
Новичков В.С.
} Program
Lab_12; uses
crt; Const Nmax=10;
{Максимальный
размер массива} Type
Matrics=array[1..Nmax,1..Nmax] of integer; Masiv=array[1..Nmax]
of integer; Var X,Y,Z,A,B:matrics; M,N:masiv; i,j,t:integer; {Процедура
ввода элементов
массива} {Параметры:
t - размер массива,
X - массив} Procedure
Vvod (t:integer; Var X:matrics); Var i,j:integer; Begin{Vvod} For
i:=1 to t do For
j:=1 to t do
Begin {Ввод
элементов}
Write ('[',i,',',j,']='); Read
(X[i,j]);
End; {Ввод
элементов} For
i:=1 to t do
Begin {Вывод
элементов}
For j:=1 to t do
Write (X[i,j]:5);
Writeln
End {Вывод
элементов} End;{Vvod} {Процедура
вывода элеменов
матриц} {Параметры:
X,Y - матрицы, t - размер} Procedure
Echo (t:integer; X:matrics); var i,j:byte; begin
{Echo} For
i:=1 to t do Begin For
j:=1 to t do Write
(X[i,j]:5);
Writeln End end;
{Echo} {Процедура
умножения
матриц} {Параметры:
X,Y - начальные
массивы, Z - массив
результат,t -
размер} Procedure
Umn (X,Y:matrics;
t:integer; Var Z:matrics); var i,j,k,s:integer; begin
{Umno} for
i:=1 to t do for
j:=1 to t do begin S:=0; for
k:=1 to t do
s:=s+X[k,i]*Y[j,k]; Z[i,j]:=s; end; end;
{Umno} {Процедура
сложения массивов} {Параметры:
X,Y - начальные
массивы, Z - массив
результат, t -
размер} Procedure
Summa(X,Y:matrics; t:integer; Var Z:matrics); var i,j:integer; begin
{Summa} for
i:=1 to t do for
j:=1 to t do
Z[i,j]:=X[i,j]+Y[i,j] end;
{Summa} {Процедура
для нахождения
суммы ниже
главной диагонали} {Параметры:
X - начальные
массивы, Y - массив
результат, t -
размер} Procedure
Under (X:matrics; t:integer; Var Y:masiv); var s:real; Begin S
:= 0; For
i := 2 to t do For
j := 1 to i-1 do
S:=S + X[i, j];
WriteLn('Сумма элементов,
лежащих ниже
главной диагонали=',
S:5:1); End; {Процедура
для нахождения
суммы выше
главной диагонали} {Параметры:
X - начальные
массивы, Y - массив
результат, t -
размер} Procedure
Over (X:matrics; t:integer; Var Y:masiv); var s:real; Begin S :=
0; For
i := 1 to t-1 do For
j := i+1 to t do
S := S + X[i, j];
WriteLn('Сумма элементов,
лежащих выше
главной диагонали=',
S:5:1);
ReadLn End; begin{lab_12} clrscr; writeln('Введите
размеры матриц
X,Y:');read(t); writeln('Введите
',t*t,' элемента для
каждой матрицы:'); writeln('Введите
матрицу X:');vvod(t,X); writeln('Введите
матрицу Y:');vvod(t,Y); writeln('Результат
возведения
матрицы X в
квадрат:'); Umn(X,X,t,A); Echo(t,A); writeln('Результат
возведения
матрицы Y в
квадрат:'); Umn(Y,Y,t,B); Echo(t,B); writeln('Полученный
массив после
преобразований:'); summa(A,B,t,Z); Echo(t,Z); under(Z,t,M); over(Z,t,N); end.{lab_12}
Блок-схема
Проведём
детализацию
в последовательности,
определяемой
нумерацией
блоков на рис.
1.
Ввод размеров
матриц X,
Y.
В данном блоке
определён ввод
размеров квадратных
матриц X,
Y
(t
– размер матриц).
Рис.11. Детализация
блока 2
схемы алгоритма.
Рис.
13. Детализация
блока 4
Печать элементов
матриц X,
Y
(а также отладочная
печать). В данном
блоке определёна
печать значений
элементов
квадратных
матриц X,
Y
размером t*t.
Умножение
матриц
удобно представить
следующей
подпрограммой,
структурограмма
которой приведена
на рисунке 13.
Сложение
матрицы
X
и матрицы Y
представлено
в виде подпрограммы
на рис.15.
Подпрограммы
формирования
вектора
из сумм элементов
выше и ниже
главной диагонали
представлена
структурограммой
на рисунке 16
и 17.
Выходные
параметры:
Y
– матрица
размером t. Z[i,j]=X[i,j]+Y[i,j] После
каждой подпрограммы
производится
отладочная
печать, представленная
отдельной
подпрограммой,
структурограмма
которой изображена
на рис. 18.
Выходные
параметры:
Y
– матрица
размером t. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||