- •Цель и задачи расчетно-графической работы по информатике
- •Указания по оформлению ргр
- •Структура ргр
- •Вспомогательные сведения
- •4.1. Запись алгоритма с помощью схем
- •4.2. Базовые управляющие структуры
- •Пример Расчетно-графической работы
- •5.1. Образец титульного листа
- •Основная часть пояснительной записки Задание 1.
- •Задание 2.
- •Задание 3.
- •Текст процедуры
- •Текст процедуры
- •1. Цель и задачи расчетно-графической работы по информатике 1
- •2. Указания по оформлению ргр 1
Задание 3.
Постановка задачи
Вычислить z = Max1 + Max2, где
Max1 – наибольший элемент матрицы G(4,4);
Max2 – наибольший элемент матрицы T(2,2).
Матрица G(4,4) получена произведением матрицы А(3,4) на матрицу В(4,3). Матрица T(2,2) получена произведением матрицы С(2,3) на матрицу D(3,2).
Решение
3.1. В программе имеются следующие подпрограммы:
процедура VVOD –
процедура VIVOD –
процедура SR –
функция max –
Составим алгоритм решения данной задачи.
3.2. Приведем, сначала, алгоритм всей программы в целом. Затем детально рассмотрим все подпрограммы по порядку.
3.3. Рассмотрим подробно все подпрограммы.
Подпрограмма VVOD. Эта подпрограмма реализована в виде процедуры и вызывается в тексте основной программы дважды. Процедура VVOD - ввод матрицы (заполнение числовыми данными, вводимыми с клавиатуры) для произвольной прямоугольной матрицы Х(n,m).
|
|
|
|
Текст процедуры
PROCEDURE VVOD(Var X:matr; n,m:integer);
Var i,j:integer;
begin
for i:= 1 to n do
for j:=1 to m do read(X[i,j]);
end;
Подпрограмма SR. Эта подпрограмма, также, реализована в виде процедуры и вызывается в тексте основной программы дважды. Процедура SR - вычисление произведения двух произвольных прямоугольных матриц G и S размером L×N и N×M. Вычисления осуществляются по формуле:
|
Текст процедуры
PROCEDURE SR(G,S:matr; L,N,M:integer;Var T:matr);
Var k,i,j:integer;
begin
for i:= 1 to L do
for j:=1 to M do
begin
T[i,j]:=0;
For k:=1 to N do T[i,j]:=T[i,j]+G[i,k]*S[k,j]l;
end;
end;
Подпрограмма VIVOD – процедура вывода произвольной прямоугольной матрицы y(k,l). Вызывается дважды. Алгоритм и его реализация аналогична процедуре VVOD:
|
PROCEDURE VIVOD(y:matr; n:integer);
Var i,j:integer;
begin
for i:= 1 to n do
begin
for j:=1 to n do write(y[i,j]:6:2,’ ’);
writeln;
end
end;
Подпрограмму Max. Эта подпрограмма реализована в виде функции. Обращение к функции Max осуществляется дважды.
|
function MaxM(x:matr; n:integer;): real;
Var i,j:integer;
max:real;
begin
max:=x[1,1];
for i:= 1 to n do
for j:= 1 to n do
if x[i,j]>max then max:=x[i,j];
Maxm:=max;
end;
Комментарий к программе:
Из основной программы данной функции передается массив х и его размер n×n. Так как в функции элементы массива не подвергаются изменению, то х передается функции как параметр-значение.
Перед выходом из функции имени функции MaxM присваивается найденное значение наибольшего элемента массива, которое и возвращается в основную программу.
Приведем, теперь, полностью текст основной программы.
PROGRAM zadanie3;
USES CRT;
type
matr=array[1 ..4,1 ..4] of real;
Var
AB,CD,a,b,c,d: matr;
z: real;
PROCEDURE VVOD(Var X:matr; n,m:integer);
Var i,j:integer;
begin
for i:= 1 to n do
for j:=1 to m do read(X[i,j]);
end;
PROCEDURE VIVOD(y:matr; n:integer);
Var i,j:integer;
begin
for i:= 1 to n do
begin
for j:=1 to n do write(y[i,j]:6:2,’ ’);
writeln;
end
end;
PROCEDURE SR(G,S:matr; L,N,M:integer;Var T:matr);
Var k,i,j:integer;
begin
for i:= 1 to L do
for j:=1 to M do
begin
T[i,j]:=0;
For k:=1 to N do T[i,j]:=T[i,j]+G[i,k]*S[k,j]l;
end;
end;
function MaxM(x:matr; n:integer;): real;
Var i,j:integer;
max:real;
begin
max:=x[1,1];
for i:= 1 to n do
for j:= 1 to n do
if x[i,j]>max then max:=x[i,j];
Maxm:=max;
end;
begin
clrscr;
writeln(‘введите A(3,4)’);
VVOD (A,3,4);
writeln(‘введите В(4,3)’);
VVOD (B,4,3);
writeln(‘введите C(2,3)’);
VVOD (C,2,3);
writeln(‘введите D(3,2)’);
VVOD (D,3,2);
SR(A,B,3,4,3,AB);
SR(C,D,2,3,2,CD);
writeln(‘вывод АВ’);
VIVOD (AB,4);
writeln(‘вывод CD’);
VIVOD (CD,2);
z:=MaxM(AB,4)+MaxM(CD,2);
writeln(‘z=’, z:6:2);
end.
Оглавление