Процедуры для произведения матриц

В программе демонстрируется применение процедур для решения задачи о произведении двух матриц.
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.

Онлайн всего: 10
Гостей: 10
Пользователей: 0

STUDLAB Сообщить про опечатку на сайте