Описание блоков укрупненной схемы алгоритма

На языке Pascal

 

Подалгоритм ввода матриц и заполнение их

Случайными вещественными числами

Рассмотренный фрагмент блок-схемы для реализации ввода элементов матрицы на языке Pascal будет представлен в следующем виде:

{******Процедура ввода матрицы*******}

procedure Vvod(var X:T2mx; var Y,Z:byte;

const MName:char);

var i,j: byte;



Begin

WriteLn(‘Введите размерность матрицы ’,MName);

ReadLn(Y, Z);

for i:=1 to Y do begin

for j:=1 to Z do begin

X[i,j]:=random + random(21)-5;

write(X[i,j]:6:1); end;

writeln; end;

end;

Подалгоритм поиска

Максимального элемента в каждой матрице

С помощью процедуры

Поиск максимального элемента в каждой матрице, изложенный графическим способом, реализуем в следующем фрагменте программы:

 

{****** Процедура поиска максимума ******}

procedure Maximum(const X: Tmatrix; const Y,Z: byte;

var Max: real);

var i,j: byte;

Begin

max:=x[1,1];

for i:=1 to Y do

for j:=1 to Z do

if x[i,j]>max then max:=X[i,j];

end;

Подалгоритм поиска

Максимального элемента в каждой матрице

С помощью функции

{****** Функция поиска максимума ******}

function Maximum(const X:T2mx;

const Y,Z:byte): real;

var i,j: byte; max:real;

Begin

max:=x[1,1];

for i:=1 to Y do

for j:=1 to Z do

if x[i,j]>Max then max:=x[i,j];

Maximum:= max;

end;

Вычисление произведения

Найденных максимальных элементов матриц

Для того, чтобы можно было перемножить значения максимумов каждой матрицы, необходимо сначала трижды вызвать процедуру Vvod итрижды вызвать процедуру Maximum.

При вызове процедур используется три набора фактических параметров, первый для матрицы A, второй для матрицы B, и третий – для матрицы C. Наборы фактических параметров соответствуют набору формальных параметров по количеству, типу, порядку следования и способу передачи.

В процедуру Vvod сначала передается матрица A, ее размерность N, M, и буква ‘A’, затем матрица B, ее размеры K, L и буква ‘B’, после этого идет третий вызов процедуры, на этот раз уже с матрицей C, ее размерностью R, H

и названием ‘C’ в качестве фактических параметров. Распространенная ошибка передавать все шесть параметров в одном блоке.

Процедура Maximum также должна вызываться трижды, но чтобы не потерять значение максимального элемента матрицы A, нужно при вызове процедуры взять три различные переменные: MaxA, MaxB и MaxC для максимальных элементов матриц A, B и C соответственно.

Все выше изложенное реализуется в следующем фрагменте программы:

Vvod(A,N,M,’A’);

Vvod(B,K,L,’B’);

Vvod(C,R,H,’C’);

Maximum(A,N,M,MaxA);

Maximum(B,K,L,MaxB);

Maximum(C,R,H,MaxC);

P:=MaxA*MaxB*Max C;

writeln (‘P=’,P:5:1);

 

С использованием функции фрагмент программы соответственно будет выглядеть следующим образом:

 

Vvod (A,N,M,’A’);

Vvod (B,K,L,’B’);

Vvod (C,R,H,’C’);

P:=Maximum (A,N,M)*Maximum (B,K,L)*Maximum (C,R,H);

writeln (‘P=’, P:5:1);

 

 



Листинг программы

С использованием процедуры

program PP_1;

type T2mx = array[1..15, 1..15] of real;

var A,B,C: T2mx;

N,M,K,L,R,H: byte;

P, MaxA, MaxB, MaxC: real;

{******Процедура ввода матрицы*******}

procedure Vvod(var X:T2mx; var Y,Z:byte;

const MName:char);

var i,j: byte;

begin

WriteLn(‘Введите размерность матрицы ’,MName);

ReadLn(Y, Z);

for i:=1 to Y dobegin

for j:=1 to Z do begin

X [i,j]:=random + random(21)-5;

write(X[i,j]:6:1); end;

writeln; end;

end;

{****** Процедура поиска максимума ******}

procedure Maximum(const X:T2mx; const Y,Z: byte;

var Max: real);

var i,j: byte;

begin

max:=x[1,1];

for i:=1 to Y do

for j:=1 to Z do

if x[i,j]>max then

max:=x[i,j];

end;

{****** Основная программа ******}

Begin

randomize;

Vvod (A,N,M,’A’);

Vvod (B,K,L,’B’);

Vvod (C,R,H,’C’);

Maximum (A,N,M,MaxA);

Maximum (B,K,L,MaxB);

Maximum (C,R,H,MaxC);

P:=MaxA*MaxB*MaxC;

writeln (‘P=’, P:5:1);

End.



Листинг программы

С использованием функции

 

program PP_2;

Type T2mx = array[1..15, 1..15] of real;

var

A,B,C: T2mx;

N,M,K,L R,H: byte;

P: real;

{******Процедура ввода матрицы*******}

procedure Vvod(var X: T2mx; var Y,Z: byte; MName:char);

var i,j: byte;

begin

WriteLn(‘Введите размерность матрицы ’,MName);

ReadLn(Y, Z);

for i:=1 to Y dobegin

for j:=1 to Z do begin

X [i,j]:=random + random(21)-5;

write(X[i,j]:6:1); end;

writeln; end;

end;

{****** Функция поиска максимума ******}

function Maximum(const X:T2mx;

const Y,Z:byte): real;

var i,j: byte;

Max:real;

begin

Max:=x[1,1];

for i:=1 to Y do

for j:=1 to Z do

if x[i,j]>Max then

max:=x[i,j];

Maximum:=max;

end;

{****** Основная программа ******}

begin

randomize;

Vvod (A,N,M,’A’);

Vvod (B,K,L,’B’);

Vvod (C,R,H,’C’);

P:=Maximum (A,N,M)*Maximum (B,K,L)*Maximum (C,R,H);

writeln (‘P=’, P:5:1);

end.




Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: