Процедуры для произведения матриц
В программе демонстрируется применение процедур для решения задачи о произведении двух матриц.
program wwod3;
uses crt;
{Раздел описания констант: nmax и mmax -
максимально возможное число строк и столбцов.
В случае необходимости можно изменить}
const
nmax=10;mmax=10;
{определение типа переменных, необходимо для параметра процедуры}
type
vector = array[1..mmax] of real;
{тип "матрица" определен как массив векторов}
matrica= array[1..nmax] of vector;
var
n,m,k,i,j,s:integer;
sum:real;
{A,B,C определеяемого типа matrica}
A,B,C:matrica;
quit:char;
{процедура ввода с параметрами n,m,A;
параметр A типа var (переменная)- "передаваемый" параметр}
procedure wwod(n,m:integer; var A:matrica);
var i,j:integer;
begin
for i:=1 to n do
begin
writeln('Введите ',i,'-ую строку');
for j:=1 to m do read(a[i,j]);
end;
writeln;clrscr;
end;
{процедура вывода}
procedure wywod(n,m:integer;A:matrica);
var i,j:integer;
begin
for i:=1 to n do
begin
writeln;
for j:=1 to m do write(a[i,j]:4:1,' ');
end;
writeln;
end;
Begin
repeat
clrscr;
write('n=');readln(n);
write('k=');readln(k);
write('m=');readln(m);
writeln('Первая матрица');
writeln('строк - ',n,' столбцов - ',k);
wwod(n,k,A);
writeln('Вторая матрица');
writeln('строк - ',k,' столбцов - ',m);
wwod(k,m,B);
writeln('Первая матрица:');
wywod(n,k,A);
writeln('Вторая матрица:');
wywod(k,m,b);
{Нахождение произведения матриц C=A*B}
for i:=1 to n do
for j:=1 to m do
begin
sum:=0;
for s:=1 to k do sum:=sum+a[i,s]*b[s,j];
c[i,j]:=sum;
end;
writeln('Произведение матриц:');
wywod(n,m,C);
{Выход по клавише Esc}
until readkey = #27;
end.