BÀI TẬP 59: TẠO BẢNG

Một mảng có kích thước 5 x 5 gồm các số nguyên dương được sắp xếp theo quy luật sau:

1

2

3

4

5

2

4

6

8

10

3

6

9

2

4

4

8

2

4

6

5

10

4

6

8

            Hãy tạo ra bảng n x n theo quy luật trên.

            Dữ liệu vào từ file: TAOBANG.INP

            - Dòng duy nhất ghi số n (1 ≤ n ≤ 600).

            Kết quả ra file: TAOBANG.OUT

            - Gồm n dòng, mỗi dòng gồm n số được sắp xếp theo quy luật, mỗi số cách nhau một khoảng trắng.

Ví dụ:

TAOBANG.INP

TAOBANG.OUT

6

1 2 3 4 5 6

2 4 6 8 10 12

3 6 9 12 2 4

4 8 12 2 4 6

5 10 2 4 6 8

6 12 4 6 8 10


CODE THAM KHẢO:
Program Tao_bang;
var a:array[0..601,0..601] of longint;
    n,m,r,c,k,i,j: longint;
    fi,fo:text;
procedure DocFile;
var k:longint;
begin
     assign(fi,'TAOBANG.INP'); reset(fi);
     readln(fi,n);
     close(fi);
end;
procedure print;
var i,j: longint;
begin
        for i:=1 to n do
        begin
                for j:=1 to n do write(fo,a[i,j]:3,' ');
                writeln(fo);
        end;
end;
procedure int;
begin
        for i:=1 to n do
          for j:=1 to n do a[i,j]:=0;
end;
procedure tao3dong; //tao N div 2 dong
begin
        for i:=1 to n div 2+1 do
        begin
                r:=i; c:=1;
                for j:=1 to n do
                begin
                        if (r*c>2*n) then
                        begin
                                r:=2; c:=1;
                        end;
                        a[i,j]:=r*c;
                        c:=c+1;
                        a[j,i]:=a[i,j];
                end;
        end;
end;
procedure tao; //tao N-N div 2 dong sau
var i,j,r,c: integer;
begin
        for i:=n div 2+2 to n do
        begin
                r:=i;
                for j:=n div 2+2 to n do
                begin
                        c:=a[i,j-1];
                        if (r+c) > 2*n then
                        begin
                                r:=2;
                                a[i,j]:=a[i-1,j+1];
                                if a[i,j] = 0 then
                                begin
                                        if (a[i,j-1]+2 > 2*N) then a[i,j]:=2
                                        else a[i,j]:=a[i,j-1]+2; //o cuoi
                                end;
                        end
                        else a[i,j]:=a[i,j-1]+2;
                end;
        end;
        a[j,i]:=a[i,j];
end;
begin
        DocFile;
        assign(fo,'TAOBANG.OUT'); rewrite(fo);
        int;
        tao3dong;
        tao;
        print;
        close(fo);
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