BÀI TẬP 55: MA PHƯƠNG (MẢNG 2 CHIỀU)

mảng 2 chiều, ma trận, ma phương

Viết chương trình nhập vào số tự nhiên N (N lẻ), sau đó điền các số từ 1 đến n2 vào trong một bảng vuông sao cho tổng các hàng ngang, hàng dọc và 2 đường chéo đều bằng nhau (bảng này được gọi là Ma phương).

            Ví dụ: Với N=3 và N=5 ta có

Phuơng pháp:

            Xuất phát từ ô bên phải của ô nằm giữa. Đi theo hướng đông bắc để điền các số 1, 2, ...

            Khi điền số, cần chú ý một số nguyên tắc sau:

                        - Nếu vượt ra phía ngoài bên phải của bảng thì quay trở lại cột đầu tiên.

                        - Nếu vượt ra phía ngoài bên trên của bảng thì quay trở lại dòng cuối cùng.

                        - Nếu số đã điền k chia hết cho N thì số tiếp theo sẽ được viết trên cùng một hàng với k nhưng cách 1 ô về phía bên phải.

    CODE THAM KHẢO:

Uses Crt;
Var A:Array[1..20,1..20] Of Word;
      n,i,j,k:Word;
Begin
  Write('Nhap N= '); Readln(n);
  Clrscr;
 {Định vị ô xuất phát}
  i:=n DIV 2 + 1;
  j:=n DIV 2 + 2;
 {Điền các số k từ 1 đến n*n}
  For k:=1 To n*n Do
   Begin
     A[i,j]:=k;
     If k MOD n=0 Then j:=j+2
     Else Begin
{Đi theo hướng đông bắc}
            j:=j+1; i:=i-1;
            End;
     If j>n Then j:=j MOD n;
     If i=0 Then i:=n;
   End;
 {In kết quả ra màn hình}
  For i:=1 To n Do
   Begin
     For j:=1 To n Do write(a[i,j]:4);
     Writeln;
   End;
  Readln;
End.



 

Nhãn:

Đăng nhận xét

[blogger]

Biểu mẫu liên hệ

Tên

Email *

Thông báo *

Được tạo bởi Blogger.
Javascript DisablePlease Enable Javascript To See All Widget