program ma_tran;
uses crt;
type km=array[1..10,1..10] of integer;
kcs=1..10;
var a:km;
n:kcs;
procedure nhapmt(ten:char; var a:km;n:kcs);
var i,j:kcs;
begin
for i:=1 to n do
for j:=1 to n do
begin
write(ten,'[',i,j,']= ');
readln(a[i,j]);
end;
end;
procedure inmt(a:km;n:kcs);
var i,j:kcs;
begin
for i:=1 to n do
begin
for j:=1 to n do write(a[i,j]:4);
writeln;
end;
end;
procedure luumt(a:km;n:kcs);
var i,j:kcs;
s:string;
f:text;
begin
write('Nhap ten File de luu: ');readln(s);
assign(f,s);
rewrite(f);
for i:=1 to n do
begin
for j:=1 to n do write(f,a[i,j]:4);
writeln(f);
end;
close(f);
write('Ma tran vua duoc luu voi ten la: ',s);
end;
procedure chonmt(var a:km;n:kcs);
var nhap,dau:1..3;
chon:1..10;
i,j:kcs;
f:text;
begin
writeln('Hay chon cach nhap ma tran');
writeln('1. Nhap tu ban phim');
writeln('2. Nhap tu File text');
writeln('3. Nhap ngau nhien');
write('Chon: '); readln(nhap);
case nhap of
1: nhapmt('A',a,n);
2: begin
write('Hay lua chon File ma tran 1..10'); readln(chon);
case chon of
1: begin
assign(f,'mt1'); reset(f);
for i:=1 to n do
for j:=1 to n do read(f,a[i,j]);
close(f);
end;
2: begin
assign(f,'mt2'); reset(f);
for i:=1 to n do
for j:=1 to n do read(f,a[i,j]);
close(f);
end;
3: begin
assign(f,'mt3'); reset(f);
for i:=1 to n do
for j:=1 to n do read(f,a[i,j]);
close(f);
end;
4: begin
assign(f,'mt4'); reset(f);
for i:=1 to n do
for j:=1 to n do read(f,a[i,j]);
close(f);
end;
5: begin
assign(f,'mt5'); reset(f);
for i:=1 to n do
for j:=1 to n do read(f,a[i,j]);
close(f);
end;
6: begin
assign(f,'mt6'); reset(f);
for i:=1 to n do
for j:=1 to n do read(f,a[i,j]);
close(f);
end;
7: begin
assign(f,'mt7'); reset(f);
for i:=1 to n do
for j:=1 to n do read(f,a[i,j]);
close(f);
end;
8: begin
assign(f,'mt8'); reset(f);
for i:=1 to n do
for j:=1 to n do read(f,a[i,j]);
close(f);
end;
9: begin
assign(f,'mt9'); reset(f);
for i:=1 to n do
for j:=1 to n do read(f,a[i,j]);
close(f);
end;
10: begin
assign(f,'mt10'); reset(f);
for i:=1 to n do
for j:=1 to n do read(f,a[i,j]);
close(f);
end;
end;
end;
3: begin
randomize;
for i:=1 to n do
for j:=1 to n do
begin
dau:=random(3);
if dau=0 then a[i,j]:=(0-random(9)) else
a[i,j]:=random(9);
end;
end;
end;
end;
procedure tongmt(a,b:km;var c:km;n:kcs);
var i,j:kcs;
begin
for i:=1 to n do
for j:=1 to n do
c[i,j]:=a[i,j]+b[i,j];
end;
procedure tichmt(a,b:km;var c:km;n:kcs);
var i,j,k:kcs;
begin
for i:=1 to n do
for k:=1 to n do
begin
c[i,k]:=0;
for j:=1 to n do c[i,k]:=a[i,j]*b[j,k]+c[i,k];
end;
end;
procedure mtcv(a:km;var b:km;n:kcs);
var i,j:kcs;
begin
for i:=1 to n do
for j:=1 to n do b[i,j]:=a[j,i];
end;
procedure sapxepmt(var a:km;n:kcs);
var i,j,k:kcs;
chon:1..4;
tg:1..100;
begin
writeln('1. Sap xep tang theo hang');
writeln('2. Sap xep giam theo hang');
writeln('3. Sap xep tang theo cot');
writeln('4. Sap xep giam theo cot');
write('Chon: ');readln(chon);
case chon of
1: begin
for i:=1 to n do
for j:=1 to (n-1) do
for k:=j to n do
if a[i,j]>a[i,k] then
begin
tg:=a[i,j];
a[i,j]:=a[i,k];
a[i,k]:=tg;
end;
end;
2: begin
for i:=1 to n do
for j:=1 to (n-1) do
for k:=j to n do
if a[i,j]
begin
tg:=a[i,j];
a[i,j]:=a[i,k];
a[i,k]:=tg;
end;
end;
3: begin
for i:=1 to (n-1) do
for j:=1 to n do
for k:=i to n do
if a[i,j]>a[k,j] then
begin
tg:=a[i,j];
a[i,j]:=a[k,j];
a[k,j]:=tg;
end;
end;
4: begin
for i:=1 to (n-1) do
for j:=1 to n do
for k:=i to n do
if a[i,j]
begin
tg:=a[i,j];
a[i,j]:=a[k,j];
a[k,j]:=tg;
end;
end;
end;
end;
procedure copymt(a:km;n:kcs;var b:km;m:kcs);
var i,j,x,y:kcs;
begin
write('copy tu phan tu nao? a[');
repeat
readln(x,y);
if (m>(n-x+1)) or (m>(n-y+1)) then
write('Khong the copy tu phan tu nay! Nhap lai a[');
until ((m<=(n-x+1)) or (m<=(n-y+1)));
for i:=1 to m do
for j:=1 to m do
b[i,j]:=a[i+x-1,j+y-1];
end;
procedure ct1;
var a,b,c:km;
n:kcs;
begin
repeat
clrscr;
writeln('CHUONG TRINH TINH TONG 2 MA TRAN');
write('Chon cap cua ma tran: n= '); readln(n);
writeln('Chon ma tran thu nhat');
chonmt(a,n);
writeln;
writeln('Chon ma tran thu hai');
chonmt(b,n);
writeln('Hai ma tran vua nhap:');
inmt(a,n);
writeln;
writeln;
inmt(b,n);
write('Nhan phim ENTER de tinh tong 2 ma tran nay');
readln;
clrscr;
tongmt(a,b,c,n);
writeln('Tong 2 ma tran la:');
writeln;
inmt(c,n);
writeln;
write('Nhan phim ESC de quay lai menu');
until readkey=#27;
end;
procedure ct2;
var a,b,c:km;
n:kcs;
begin
repeat
clrscr;
writeln('CHUONG TRINH TINH TICH 2 MA TRAN');
writeln;
write('Chon cap cua ma tran: n= '); readln(n);
writeln('Chon ma tran thu nhat');
chonmt(a,n);
writeln;
writeln('Chon ma tran thu hai');
chonmt(b,n);
writeln;
writeln('2 ma tran vua nhap la:');
inmt(a,n);
writeln;
writeln;
inmt(b,n);
write('Nhan phim ENTER de tinh tich 2 ma tran nay');
readln;
clrscr;
tichmt(a,b,c,n);
writeln('Tich 2 ma tran la:');
writeln;
inmt(c,n);
writeln;
write('Nhan phim ESC de quay lai menu');
until readkey=#27;
end;
procedure ct3;
var a,b:km;
n:kcs;
begin
repeat
clrscr;
writeln('CHUONG TRINH MA TRAN CHUYEN VI');
writeln;
write('Chon cap cua ma tran, n= '); readln(n);
writeln('Chon ma tran');
chonmt(a,n);
writeln;
writeln;
writeln('Ma tran vua nhap la:');
writeln;
writeln;
inmt(a,n);
writeln;
writeln;
mtcv(a,b,n);
writeln('Ma tran chuyen vi cua ma tran tren la:');
writeln;
writeln;
inmt(b,n);
writeln;
writeln;
write('Nhan phim ESC de quay lai menu');
until readkey=#27;
end;
procedure ct4;
var a:km;
n:kcs;
begin
repeat
clrscr;
writeln('CHUONG TRINH SAP XEP MA TRAN');
writeln;
writeln;
write('Chon cap cua ma tran, n= '); readln(n);
writeln;
writeln('Hay chon ma tran');
chonmt(a,n);
writeln('Ma tran vua nhap la:');
writeln;
inmt(a,n);
write('Nhan phim ENTER de sap xep ma tran');
readln;
sapxepmt(a,n);
writeln;
writeln;
write('Ma tran da sap xep la:');
writeln;
inmt(a,n);
write('Nhan phim ESC de quay lai menu');
until readkey=#27;
end;
procedure ct5;
var a,b:km;
n,m:kcs;
begin
repeat
clrscr;
writeln('CHUONG TRINH COPY MA TRAN');
writeln;
writeln;
write('Chon cap cua ma tran, n= '); readln(n);
writeln;
writeln('Hay chon ma tran');
writeln;
chonmt(a,n);
writeln;
writeln('Ma tran vua nhap la:');
writeln;
inmt(a,n);
writeln;writeln;
write('Nhan phim ENTER de copy ma tran');
readln;
write('Chon cap cua ma tran con muon copy, m= ');
repeat
readln(m);
if m>n then write('m phai <= ',n,'. Nhap lai m= ');
until m<=n;
writeln;
copymt(a,n,b,m);
writeln('Ma tran con vua duoc copy la:');
writeln;writeln;
inmt(b,m);
writeln;
writeln;
write('Nhan phim ESC de quay lai menu');
until readkey=#27;
end;
procedure ct6; {Ma tran tam giac}
var a:km;
i,j,n:kcs;
chon:1..2;
s:string;
f:text;
begin
repeat
clrscr;
writeln('CHUONG TRINH MA TRAN TAM GIAC');
writeln;
write('Chon cap cua ma tran, n= ');readln(n);
writeln;writeln;
chonmt(a,n);
writeln;
writeln('Ma tran vua nhap la:');
writeln;writeln;
inmt(a,n);
writeln;
write('Nhan phim ENTER de sap xep ma tran tam giac');
readln;
writeln('1. Ma tran tam giac tren');
writeln('2. Ma tran tam giac duoi');
write('Chon '); readln(chon);
case chon of
1: begin
writeln('Ma tran tam giac tren:');
writeln;writeln;
for i:=1 to n do
begin
for j:=1 to n do
if i
writeln;
end;
write('Nhan phim l de luu ma tran nay');
if readkey=#108 then
begin
write('Nhap ten File muon luu: '); readln(s);
if length(s)<>0 then
begin
assign(f,s);
rewrite(f);
for i:=1 to n do
begin
for j:=1 to n do;
if i
end;
writeln(f);
close(f);
end;
write('Ma tran da duoc luu voi ten: ',s);
end;
end;
2: begin
writeln('Ma tran tam giac duoi:');
writeln;writeln;
for i:=1 to n do
begin
for j:=1 to n do
if i>j then write(a[i,j]:4) else write(' ');
writeln;
end;
write('Nhan phim l de luu ma tran nay');
if readkey=#108 then
begin
write('Nhap ten File muon luu: '); readln(s);
if length(s)<>0 then
begin
assign(f,s);
rewrite(f);
for i:=1 to n do
begin
for j:=1 to n do;
if i>j then write(f,a[i,j]) else write(f,s);
end;
writeln(f);
close(f);
end;
write('Ma tran da duoc luu voi ten: ',s);
end;
end;
end;
writeln;writeln;writeln;
write('Nhan phim ESC de quay lai menu');
until readkey=#27;
end;
begin
clrscr;
ct6;
end.