Pascal

Modified: Wednesday, 22-12-2021 07:00 AM

Nhập vào số hàng, số cột.

Xuất ra ma trận xoắn ốc có dạng như sau:

Ví dụ số hàng là 3; số cột là 4

1 2 3 4
10 11 12 5
9 8 7 6


Dưới đây là Code của Vương Tú Bình

Lưu ý: 

sh: số hàng
sc: số cột
vth: vị trí hàng
vtc: vt cột


program Xoan_Oc;
uses crt ;
var i,j,sh,sc,vth,vtc,dem,ssh,ssc:integer;
    a:array[1..100,1..100] of integer;
begin 
    clrscr;
    dem := 0; vtc := 1; vth := 1;
    write('nhap sh,sc:'); readln(sh,sc);
    ssh := sh; 
    ssc := sc;
    while vth*vtc <= sh*sc do 
    begin
        // Trái qua phải
        for j:=vtc to sc do 
        begin 
            dem := dem+1;
            if dem > ssh*ssc then break;
            a[vth,j]:=dem; 
        end;
        // Trên xuống
        for i:=vth+1 to sh do 
        begin 
            dem := dem+1; 
            if dem > ssh*ssc then break;
            a[i,sc]:=dem;
        end;
        // Phải qua trái
        for j:=sc-1 downto vtc do 
        begin 
            dem := dem+1; 
            if dem > ssh*ssc then break;
            a[sh,j]:=dem;
        end;
        // Dưới lên
        for i:=sh-1 downto vth+1 do 
        begin 
            dem := dem+1; 
            if dem > ssh*ssc then break;
            a[i,vtc]:=dem;
        end;
        
        vth:=vth+1; vtc:=vtc+1;sh:=sh-1; sc:=sc-1;
    end;
    for vth:=1 to ssh do
    begin 
        for vtc:=1 to ssc do
            write(a[vth,vtc]:4);
        writeln;
    end;  
    readln;
end.