Lập trình đơn giản

Trương Quang Dũng

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

Yêu cầu: Cho một số N hãy in ra bảng Ma phương.

Dữ liệu vào trong tập tin maphuong.inp gồm một số tự nhiên N lẻ

Dữ liệu ra trong tập tin maphuong.out in ra mảng tìm được

Ví dụ 1:

----------------------------------------

maphuong.inp

3

-----------------------------------------

maphuong.out

2 7 6

9 5 1

4 3 8

-------------------------------------------

maphuong.inp

5

--------------------------------------------

maphuong.out

3 16 9 22 15

20 8 21 14 2

7 25 13 1 19

24 12 5 18 6

11 4 17 10 23

-------------------------------------------------------------------------------------------------------------------------------------------------------

-THE END-

vothedien
5 tháng 2 2019 lúc 19:30

Uses Crt;

Var A:Array[1..20,1..20] Of Word;

n,i,j,k:Word;

Begin

Clrscr;

Write('Nhap N= '); Readln(n);

i:=n DIV 2 + 1;

j:=n DIV 2 + 2;

For k:=1 To n*n Do

Begin

A[i,j]:=k;

If k MOD n=0 Then j:=j+2 Else

Begin

j:=j+1;

i:=i-1;

End;

If j>n Then j:=j MOD n;

If i=0 Then i:=n;

End;

For i:=1 To n Do

Begin

For j:=1 To n Do write(a[i,j]:4);

Writeln;

End;

Readln

End.

Bình luận (1)
Trương Quang Dũng
27 tháng 1 2019 lúc 21:00

Có ai làm ra chưa?

Bình luận (0)
Mai Nguyễn Hào Hiệp 9a4
10 tháng 3 2022 lúc 19:43

uses crt;
var a:array[1..100,1..100] of integer;
    n:byte;So:integer;

procedure xuat();
var i,j:byte;Tong:integer;
begin
  for i:=1 to n do
    begin
      Tong:=0;
      for j:=1 to n do
        begin
          Tong:=Tong+a[i,j];
          write(a[i,j]:4);
        end;
      writeln{(' = ',Tong) };
    end;
  {writeln;     }
end;

procedure Dienso();
var i,j:byte;
begin
  i:=(n div 2)+1;j:=(n div 2)+2; so:=1;a[i,j]:=so;
  repeat
     if So mod n=0 then
      begin
        inc(so); j:=j+2; if j>n then j:=j-n; a[i,j]:=so;
      end else
           begin
             dec(i);inc(j);inc(So);
             if i=0 then
              begin
                i:=n;
                if j>n then j:=1;
                a[i,j]:=So;
              end
             else if j>n then
              begin
                j:=1;
                a[i,j]:=So;
              end
             else a[i,j]:=So;
           end;
  until so=n*n;
end;

begin clrscr;
  repeat
    readln(n);
  until odd(n);

  if n=1 then write(1)
  else
    begin
      Dienso;
      xuat;
    end;
  readln
end.
Tac gia mnhaohiep :333

{Mình chỉ nhập n. Không mở file đóng file}

Bình luận (0)
nguyễn an phát
14 tháng 5 2022 lúc 14:23

program bai1;
uses crt;
var i,j,n,x,y:integer;
a:array[0..100,0..100] of integer;
f,g:text;
procedure dequy;
begin
  if i=n*n then exit;
  if(x>1)and(y<n)and(a[x-1,y+1]=0)and(i<n*n)then
  begin
    x:=x-1;
    y:=y+1;
    i:=i+1;
    a[x,y]:=i;
    dequy;
  end;
  if(y=n)and(x>1)and(i<n*n)then
  begin
    x:=x-1;y:=1;i:=i+1;a[x,y]:=i;dequy;
  end;
  if(x=1)and(i mod n<>0)and(i<n*n)then
  begin
    x:=n;y:=y+1;i:=i+1;a[x,y]:=i;dequy;
  end;
  if(i mod n=0)and(i<n*n)then
  begin
    if(y+2<=n)then
    begin
      y:=y+2;
      i:=i+1;
      a[x,y]:=i;
      dequy;
    end
    else
    begin
      y:=(y+2)-n;
      i:=i+1;
      a[x,y]:=i;
      dequy;
    end;
  end;
end;
begin
  assign(f,'maphuong.inp');reset(f);
  assign(g,'maphuong.out');rewrite(g);
  readln(f,n);
  x:=n div 2+1;y:=n-n div 2+1;i:=1;
  a[x,y]:=1;
  dequy;
  for i:=1 to n do
  begin
    for j:=1 to n do
    write(g,a[i,j]:3);
    writeln(g);
  end;
  close(f);
  close(g);
end.

Bình luận (0)

Các câu hỏi tương tự
Ma Phan Đức
Xem chi tiết
ytkc
Xem chi tiết
Hưng Quốc
Xem chi tiết
Huệ Hà
Xem chi tiết
Jun DeepTry
Xem chi tiết
Hoàng Như Trâm
Xem chi tiết
Hắc Phong
Xem chi tiết
Phạm bình hữu đan
Xem chi tiết
Ngan Nguyen
Xem chi tiết