Меня запарило такую фигню писать, ИМО это только для 8-9 класса лицея.
Моя шняга работает с квадратными матрицами. Порядок в матрице задается в константах.
Код:
program MATRIX;
uses crt;
const
MAX=4;
var
a,b,t1,t2,c1,c2:array [1..MAX,1..MAX] of integer;
j,i,k:integer;
key1,key2:char;
begin
while true do begin
clrscr;
for j:=1 to MAX do
for i:=1 to MAX do begin
t1[j,i]:=0; t2[j,i]:=0; c1[j,i]:=0; c2[j,i]:=0;
end;
repeat
clrscr;
writeln('1-console input'); writeln('2-auto'); writeln('3-exit');
key1:=readkey;
until ((key1='1') or (key1='2') or (key1='3'));
if key1='3' then break;
if key1='1' then begin
for j:=1 to MAX do begin
for i:=1 to MAX do begin
write('a[', j ,',' ,i ,']='); read(a[j,i]);
end;
writeln;
end;
for j:=1 to MAX do begin
for i:=1 to MAX do begin
write('b[', j ,',' ,i ,']='); read(b[j,i]);
end;
writeln;
end;
end;
if key1='2' then begin
writeln('Matrix 1');
for j:=1 to MAX do begin
for i:=1 to MAX do begin
a[j,i]:=random(10); write(a[j,i]); write(' ');
end;
writeln;
end;
writeln('Matrix 2');
for j:=1 to MAX do begin
for i:=1 to MAX do begin
b[j,i]:=random(10); write(b[j,i]); write(' ');
end;
writeln;
end;
end;
writeln(' Matrix created, press key'); key2:=readkey;
writeln('T-Matrix 1');
for i:=1 to MAX do begin
j:=1;
while j<=MAX do begin
t1[i,j]:=a[j,i]; inc(j);
end;
end;
for j:=1 to MAX do begin
for i:=1 to MAX do
write(t1[j,i],' ');
writeln;
end;
writeln('T-Matrix 2');
for i:=1 to MAX do begin
j:=1;
while j<=MAX do begin
t2[i,j]:=b[j,i]; inc(j);
end;
end;
for j:=1 to MAX do begin
for i:=1 to MAX do
write(t2[j,i],' ');
writeln;
end;
writeln(' T-Matrix created, press key'); key2:=readkey;
writeln('Matrix 1 * Matrix 2');
for i:=1 to MAX do
for j:=1 to MAX do
for k:=1 to MAX do
c1[i,j]:=c1[i,j]+a[i,k]*b[k,j];
for j:=1 to MAX do begin
for i:=1 to MAX do
write(c1[j,i],' ');
writeln;
end;
writeln('Matrix 2 * Matrix 1');
for i:=1 to MAX do
for j:=1 to MAX do
for k:=1 to MAX do
c2[i,j]:=c2[i,j]+b[i,k]*a[k,j];
for j:=1 to MAX do begin
for i:=1 to MAX do
write(c2[j,i],' ');
writeln;
end;
writeln(' Increase Matrix created, press key to clear screen'); key2:=readkey;
end;
end.