Dưới đây là chương trình mẫu để chạy tự động trên máy tính viết bằng Pascal, các bạn có thê chuyên sang ngôn ngữ khác có giao diện đẹp hơn :.
Trang 1Chương trình mẫu ma trận điều hoa chạy tự động trên máy tính
viet bang Pascal
( các bạn có thể chuyển sang ngôn ngữ khác có giao diện đẹp hơn )
Program Matran_dieuhoa;
Uses Crt;
Const L=100;
Var a: Array[1 L,1 L] of Integer;
hang, cot: Array[1 L] of Real;
i, J, km, n: 1 L;
tam: Integer; tong: Real;
Procedure Nhap_ matran;
Begin
For j:=1 to n do begin
tam:=(j-1)*n;
For i:=1 to n do alfi,j|:=i+tam;
end;
End; {Nhap_matran}
{ }
Procedure Xoay_1; {n=3,7,11, }
Begin
Trang 2For i:=1 to (k-1) do begin
tam:=a[i,1];
a[i,i|:=a[i,k]5
a[i,k]:=a[n+1-i,1]5
a[n+1-1,i|:=a[k,i];
a[k,i]:=a[n+1-i,n+1-i];
a[n+1-i,n+1-i]:= a[n+1-i,k];
a[n+1-1,k]:=a[i,n+1-i];
a[i,n+1-i]:= a[k,n+1-i];
a[k,n+1-i]:=tam;
end;
End; {Xoay_ l}
{
Procedure Xoay_ 2; {n=5,9,1, }
Begin
For i:=1 to (k-1) do begin
tam:=a[i,i];
a[i,i|:=a[i,k]5
a[i,k]:=a[i,n+1-i];
a[i,n+1-1]:=a[k,i];
a[k,i]:=a[n+1-i,n+1-i];
a[n+1-i,n+1-i|:= a[n+1-i,k];
a[n+1-1,k]:=a[n+1-1,i];
Trang 3a[n+1-1,i]:= a[k,n+1-i];
a[k,n+1-i]:=tam;
end;
End; {Xoay 2}
{
Procedure Xoay_ 3; {n=4,6,8, }
Begin
For i:=1 to k do begin
tam:=a[i,i];
a[i,i]:=a[n+1-i,n+1-i];
a[n+1-i,n+1-i]:= tam;
tam:=a[n+1-i,1];
a[n+1-1,i]:= a[i,n+1-i];
a[i,n+1-i]:=tam:
end;
End; {Xoay 3}
Procedure Hoanvi_ngang(m: Integer);
Begin
For i:=1 to m do
For j:=1 to (m+1-i) do begin
tam:=a[i,k+j];
a[i,k+j]:= a[int+1-k-j];
Trang 4a[in+1-k-j|:=tam;
tam:=a[n+1-i,k+j];
a[n+1-i,k+j|:= a[n+1-i,n+1-k-j];
a[n+1-i,n+1-k-j|:=tam;
end;
If m>1 then for 1:=2 to m do
For j:=1 to (1-1) do begin
tam:=a|i,j];
a[i,j|:=al[i,n+1-j];
a[i,n+1-j|:= tam;
tam:=a[n+1-i,j];
a[n+1-i,j]:= a[nt+1-i,n+1-j];
a[n+1-i,n+1-j|:=tam;
end;
For i:=(m+1) to (n-k) do
For j:=1 to m do begin
tam:=a[i,i-m-1+]];
a[i,i-m-1+]]:= a[i,n+m-+2-1-j];
a[l,n+m+2-i-j|:=tam;
tam:=a[n+1-i,i-m-1+j];
a[n+1-i,i-m-1+j]:= a[n+1-i,.n+m+2-1-]]; a[n+1-i,n+m+2-ï-j|:=tam:
end;
Trang 5End;{Hoanvi_ ngang}
Procedure Hoanvi_doc(m: Integer);
Begin
For j:=1 to m do
For i:=1 to (m+1-j) do begin
tam:=a[k+i,j];
a[k+i,j]:= a[k+i,n+1-]];
a[k+i,n+1-j|:=tam;
tam:=a[k+i,n+1-j];
a[k+i,n+1-j|:= a[n+1-k-i,n+1-j];
a[n+1-k-i,n+1-j|:=tam;
end;
If m>1 then for j:=2 to m do
For i:=1 to (j-1) do begin
tam:=a|i,j];
a[i,j]:=a[n+1-1,j];
a[n+1-i,j]:= tam;
tam:=a[i,n+1-j];
a[i,n+1-j]:= a[n+1-i,n+1-j];
a[n+1-i,n+1-j|:=tam;
end;
For j:=(m+1) to (n-k) do
Trang 6For i:=1 to m do begin
tam:=a[j-m-1+1,j];
a[j-m-1+1,j]:= a[n+m+2-j-i,j];
a[n+m-+2-j-i,j|:=tam;
tam:=a[j-m-1+i,n+1-j];
a[j-m-1+i,n+1-j]:= a[n+m+2-j-i,n+1-j]; a[n+m+2-j-i,n+1-j|:=tam;
end;
End;{Hoanvi doc}
{
Procedure Hoanvi_don(m: Integer); {n=6,10,14, } Begin
{ Hoan vi ngang nua tren }
For i:=1 to m do begin
tam:=a[i,k-m+i];
a[i,k-m+i]:= a[i,k+m-+1-i];
a[i,k+m+1-i]:=tam;
end;
For i:=(m+1) to k do begin
tam:=a[i,i-m];
a[i,i-m|:= a[izn+m+1-i];
a[i,n+m-+1-i]:=tam;
end;
Trang 7{ Hoan vi doc nua trai }
For j:=1 to m do begin
tam:=a[k-m-+},j];
a[k-m+j,j|:= a[k+m+1-j,j];
a[k+m-+1-j,j]:=tam;
end;
For j:=(m+1) to k do begin
tam:=a[j-m.,j];
a[j-m.j|:= a[n+m+T1-],j]›
a[n+m+1-j,j]:=tam;
end;
End; {Hoanvi_ don}
Procedure Xuat_matran;
Begin
For i:=1 to n do begin
For j:=1 to n do Write(a[i,j]:4);
Writeln;
Writeln;
end;
End; {Xuat_matran}
BEGIN
Trang 8Clrscr;
Writeln(‘Day la chuong trinh sap xep cac so nguyen tu 1 den n*n vao mot ma tran’);
Writeln(‘n*n sao cho tong cac hang, cac cot va cac duong cheo deu bang nhau :”);
Write(‘Ban hay chon n tu 3 den 100: °);
Readln(n);
Nhap_matran;
If (n mod 2)<~0 then begin
k:=(n+1) div 2;
If (k mod 2)=0 then begin {n=3,7,11, }
Xoay_1;
m:=(n-3) div 4;
If m0 then begin
Hoanvi_ngang(m);
Hoanvi_doc(m);
end;
end else begin {n=5,9,13, }
Xoay 2;
m:=(n-5) div 4;
If m0 then Hoanvi_ngang(m);
Hoanvi_doc(m+1);
end;
end else begin
Trang 9k:=n div 2;
Xoay 3;
If (k mod 2)=0 then begin {n=4,8,12, }
m:=(n-4) div 4;
If m0 then begin
Hoanvi_ngang(m);
Hoanvi_ doc(m);
end;
end else begin {n=6,10,14, }
m:=(n-6) div 4;
If m0 then begin
Hoanvi_ngang(m);
Hoanvi_ doc(m);
end;
Hoanvi_don(m+1);
end;
end;
Writeln(‘Ma tran cua ban la :’);
Xuat_matran;
Readhn;
END
Dưới đây là chương trình mẫu để chạy tự động trên máy tính viết bằng Pascal, các bạn có thê chuyên sang ngôn ngữ khác có giao diện đẹp hơn :
Trang 10Program Matran_dieuhoa;
Uses Crt;
Const L=100;
Var a: Array[1 L,1 L] of Integer;
hang, cot: Array[1 L] of Real;
i, J, km, n: 1 L;
tam: Integer; tong: Real;
{
Procedure Nhap_ matran;
Begin
For j:=1 to n do begin
tam:=(j-1)*n;
For i:=1 to n do alfi,j|:=i+tam;
end;
End; {Nhap_matran}
Procedure Xoay_1; {n=3,7,11, }
Begin
For i:=1 to (k-1) do begin
tam:=a[i,1];
Trang 11a[i,i|:=a[i,k]5
a[i,k]:=a[n+1-i,1]5
a[n+1-1,i|:=a[k,i];
a[k,i]:=a[n+1-i,n+1-i];
a[n+1-i,n+1-i]:= a[n+1-i,k];
a[n+1-1,k]:=a[i,n+1-i];
a[i,n+1-i]:= a[k,n+1-i];
a[k,n+1-i]:=tam;
end;
End; {Xoay_ l}
t
Procedure Xoay_ 2; {n=5,9,1, }
Begin
For i:=1 to (k-1) do begin
tam:=a[i,i];
a[i,i|:=a[i,k]5
a[i,k]:=a[i,n+1-i];
a[i,n+1-1]:=a[k,i];
a[k,i]:=a[n+1-i,n+1-i];
a[n+1-i,n+1-i]:= a[n+1-i,k];
a[n+1-1,k]:=a[n+1-1,i];
a[n+1-1,i]:= a[k,n+1-i];
a[k,n+1-i]:=tam;
Trang 12end;
End; {Xoay 2}
{
Procedure Xoay_ 3; {n=4,6,8, }
Begin
For i:=1 to k do begin
tam:=a[i,1];
a[i,i]:=a[n+1-i,n+1-i];
a[n+1-i,n+1-i]:= tam;
tam:=a[n+1-i,1];
a[n+1-1,i]:= a[i,n+1-i];
a[i,n+1-i]:=tam:
end;
End; {Xoay 3}
Procedure Hoanvi_ngang(m: Integer);
Begin
For i:=1 to m do
For j:=1 to (m+1-i) do begin
tam:=a[i,k+j];
a[i,k+j]:= a[int+1-k-j];
a[in+1-k-j|:=tam;
tam:=a[n+1-i,k+j];
Trang 13a[n+1-i,k+j|:= a[n+1-i,n+1-k-j];
a[n+1-i,n+1-k-j|:=tam;
end;
If m>1 then for 1:=2 to m do
For j:=1 to (1-1) do begin
tam:=a|i,j];
a[i,j]:=a[i,n+1-j];
a[i,n+1-j]:= tam;
tam:=a[n+1-i,j];
a[n+1-i,j|:= a[n+1-i,n+1-j];
a[n+1-i,n+1-j|:=tam;
end;
For i:=(m+1) to (n-k) do
For j:=1 to m do begin
tam:=a[i,i-m-1+]];
a[i,i-m-1+]]:= a[i,n+m-+2-1-j];
a[l,n+m+2-i-j|:=tam;
tam:=a[n+1-i,i-m-1+j];
a[n+1-i,i-m-1+j]:= a[n+1-i,n+m+2-1-j]; a[n+1-i,n+m+2-ï-j|:=tam:
end;
End;{Hoanvi_ ngang}
{
Trang 14Procedure Hoanvi_doc(m: Integer);
Begin
For j:=1 to m do
For i:=1 to (m+1-j) do begin
tam:=a[k+i,j];
a[k+i,j]:= a[k+i,n+1-]];
a[k+i,n+1-j|:=tam;
tam:=a[k+i,n+1-j];
a[k+i,n+1-j|:= a[n+1-k-i,n+1-j]; a[n+1-k-i,n+1-j|:=tam;
end;
If m>1 then for j:=2 to m do
For i:=1 to (j-1) do begin
tam:=a|i,j];
a[i,j]:=a[n+1-1,j];
a[n+1-i,j]:= tam;
tam:=a[i,n+1-j];
a[i,n+1-j|:= a[n+1-i,n+1-j]; a[n+1-i,n+1-j|:=tam;
end;
For j:=(m+1) to (n-k) do
For i:=1 to m do begin
tam:=a[j-m-1+1,j];
Trang 15a[j-m-1+1,j]:= a[n+m+2-j-i,j];
a[n+m-+2-j-i,j|:=tam;
tam:=a[j-m-1+i,n+1-j];
a[j-m-1+i,n+1-j|:= a[n+m-+2-j-i,n+1-j]; a[n+m+2-j-i,n+1-j]:=tam;
end;
End;{Hoanvi doc}
{
Procedure Hoanvi_don(m: Integer); {n=6,10,14, } Begin
{ Hoan vi ngang nua tren }
For i:=1 to m do begin
tam:=a[i,k-m+i];
a[i,k-m+i]:= a[i,k+m-+1-i];
a[i,k+m+1-i]:=tam;
end;
For i:=(m+1) to k do begin
tam:=a[i,i-m];
a[i,i-m]:= a[i,n+m+1-i];
a[i,n+m-+1-i]:=tam;
end;
{ Hoan vi doc nua trai }
For j:=1 to m do begin
Trang 16tam:=a[k-m-+j,j];
a[k-m+j.j]:= a[k+m+T1-j.j]›
a[k+m+1-j,j|:=tam;
end;
For j:=(m+1) to k do begin
tam:=a[j-m.,j];
a[j-m.j|:= a[n+m+T1-],j]›
a[n+m+1-j,j]:=tam;
end;
End; {Hoanvi_ don}
Procedure Xuat_matran;
Begin
For i:=1 to n do begin
For j:=1 to n do Write(a[i,j]:4);
Writeln;
Writeln;
end;
End; {Xuat_matran}
BEGIN
Clrscr;
Trang 17Writeln(‘Day la chuong trinh sap xep cac so nguyen tu 1 den n*n vao mot ma tran’);
Writeln(‘n*n sao cho tong cac hang, cac cot va cac duong cheo deu bang nhau :”);
Write(‘Ban hay chon n tu 3 den 100: °);
Readln(n);
Nhap_matran;
If (n mod 2)<~0 then begin
k:=(n+1) div 2;
If (k mod 2)=0 then begin {n=3,7,11, }
Xoay_1;
m:=(n-3) div 4;
If m0 then begin
Hoanvi_ngang(m);
Hoanvi_doc(m);
end;
end else begin {n=5,9,13, }
Xoay 2;
m:=(n-5) div 4;
If m0 then Hoanvi_ngang(m);
Hoanvi_doc(m+1);
end;
end else begin
k:=n div 2;
Trang 18Xoay 3;
If (k mod 2)=0 then begin {n=4,8,12, } m:=(n-4) div 4;
If m0 then begin
Hoanvi_ngang(m);
Hoanvi_ doc(m);
end;
end else begin {n=6,10,14, }
m:=(n-6) div 4;
If m0 then begin
Hoanvi_ngang(m);
Hoanvi_ doc(m);
end;
Hoanvi_don(m+1);
end;
end;
Writeln(‘Ma tran cua ban la :’);
Xuat_matran;
Readhn;
END