Лабораторна робота №12
End; begin{lab12} clrscr; writeln («Запровадьте розміри матриць X, Y: «);read (t); writeln («Запровадьте «, t*t, «елемента кожної матриці: «); writeln («Запровадьте матрицю X: «);vvod (t, X); writeln («Запровадьте матрицю Y: «);vvod (t, Y); writeln («Результат спорудження матриці XX ст квадрат: «); Umn (X, X, t, A); Echo (t, A); writeln («Результат спорудження матриці Y в квадрат: «); Umn (Y, Y… Читати ще >
Лабораторна робота №12 (реферат, курсова, диплом, контрольна)
Цель роботи: Вивчення правил описи і виклику підпрограм: процедур і функцій. Одержання навичок оволодіння прийомами роботи над подпрограммами. Завдання№ 17. Вважати суму елементів лежачих вище головною діагоналі матриці для матриці Z=X2+Y2.
Програма на Turbo Pascal {Програма: Kyrsaсh.
} {Мета: Знайти суму елементів вище головною діагоналі } {Переменные:
} { X, Y — запроваджувані массивы.
} { N, M, A, B, Z — проміжні масиви } { t — Розмір массива.
} { і, j — перемінні цикла.
} {Програміст: Позднышев А. А. група 316 } {Перевірив: Новачків В.С.
} Program Lab12; 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 («[ «,і, «, «, 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.
P.S := 0;
For і := 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.
P.S := 0;
For і := 1 to t-1 do.
For j := i+1 to t do.
P.S := P. S + X[i, j];
WriteLn («Сума елементів, лежачих вище головною діагоналі= «, S:5:1);
ReadLn.
End; begin{lab12} clrscr; writeln («Запровадьте розміри матриць X, Y: »);read (t); writeln («Запровадьте », t*t, «елемента кожної матриці: »); writeln («Запровадьте матрицю X: »);vvod (t, X); writeln («Запровадьте матрицю Y: »);vvod (t, Y); writeln («Результат спорудження матриці XX ст квадрат: »); 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.{lab12}.
Блок-схема Проведём деталізацію в послідовності, обумовленою нумерацією блоків на рис. 1.
1. Введення розмірів матриць X, Y. У цьому блоці визначено введення розмірів квадратних матриць X, Y (t — розмір матриць). |Ім'я підпрограми: VVOD | | |Вхідні параметри: | | |кількість елементів t*t | | | I=1(1)t | | | | J=1(1)t | | | | |Введення елементів | | |Вихідні параметри: X — | | |матриця розміром t*t. | |.
Рис. 11. Деталізація блоку 2 схеми алгоритма.
|Ім'я підпрограми UMN | |Вхідні параметри: X, Y — | |матриці розміром t*t | | |I=1(1)t | | | | | | J=1(1)t | | | |S=0 | | | | K=1(1)t | | | | |S=S+X[i, k]*Y[k, j] | | | |C[i, j]=S | |Вихідні параметри: матриця | |Z розміром t*t | |Рис. 13. Деталізація блоку 4| |схеми алгоритму |.
2. Введення елементів можна відповідної підпрограмою, структурограмма якої приведено на рис. 11. Усього має бути виведено t*t значень кожному за массива.
3. Печатка елементів матриць X, Y (і навіть отладочная печатку). У цьому блоці определёна печатку значень елементів квадратних матриць X, Y розміром t*t.
4. Множення матриць зручно уявити наступній підпрограмою, структурограмма якої приведено малюнку 13.
5. Складання матриці X і матриці Y представлено як підпрограми на рис. 15.
6. Підпрограми формування вектора з сум елементів вищою, і нижче головною діагоналі представлена структурограммой малюнку 16 і 17.
|Имя підпрограми OVER | |Вхідні параметри: X — | |матриця, розміром t*t | | |S=0 | | |I=1(1)t-1 | | | |J=i+1(1)t | | | | S=S+X[i, j] | | | |Вихідні параметри: | | | |Y — матриця розміром t. | |Рис. 16. Деталізація блоку 8| |схеми алгоритму | |Ім'я підпрограми: SUMMA | |Вхідні параметри: X, Y — | |матриці, розміром t*t | | I=1(1)t | | | J=1(1)t | | | |Z[i, j]=X[i, j]+Y[i, j]| |Вихідні параметри: Z — | |матриця розміром t*t. | |Рис. 15. Деталізація блоку| |7 схеми алгоритму |.
После кожної підпрограми виробляється отладочная печатку, представлена окремої підпрограмою, структурограмма якої зображено на рис. 18.
|Имя підпрограми UNDER | |Вхідні параметри: X — | |матриця, розміром t*t | | |S=0 | | |I=2(1)t | | | |J=1(1)i-1 | | | | S=S+X[i, j] | | | |Вихідні параметри: | | | |Y — матриця розміром t. | |Рис. 17. Деталізація блоку 8| |схеми алгоритму |.
|Имя підпрограми: Echo | |Вхідні параметри: X — | |матриця, розміром t*t | | I=1(1)t | | | J=1(1)t | | | |Висновок елементів | |Вихідні параметри: Y — | |матриця розміром t*t. | |Рис. 18. Деталізація | |підпрограми виведення элементов|.
———————————;
Конец.
Вектор з сум елементів вищою, і нижче диагонали.
Z=A+B.
B=Y*Y.
A=X*X.
Введення элементов.
Печатка елементів X, Y.
Введення размера.
Начало.