Другие языки программирования и технологии

ПОМОГИТЕ! В паскале заполнить квадратный массив размерностью n числами 1,2,3… по спирали от края к центру по часовой стр

стрелке.
Uses CRT;
Var C: array[1..21, 1..21] of integer;
a, b, d, e, n, i, j, x: integer;
Begin
clrscr;
writeln('Введите размерность квадратного массива '); readln(n);
writeln;
d:=1; x:=1; a:=1; b:=n; e:=n div 2;
while i<=e do
begin
i:=a; for j:=a to b do
begin C[i,j]:=x; x:=x+1 end;
j:=b; for i:=a+1 to b-1 do
begin C[i,j]:=x; x:=x+1 end;
i:=b; for j:=b downto a do
begin C[i,j]:=x; x:=x+1 end;
j:=a; for i:=b-1 downto a+1 do
begin C[i,j]:=x; x:=x+1 end;
a:=a+1; b:=b-1; d:=d+1;
end;
if n=2*e then C[a,b]:=x-1 else C[a,b]:=x;
for i:=1 to n do
begin
for j:=1 to n do write(C[i,j]:4);
writeln
end;
End.
Сергей Зырянов
Сергей Зырянов
12 284
Лучший ответ
хм.. . интересная задачка.. .

а сама чего ?

пробуй
var i,j,l,k,p,m,n,r:integer; a:array[1..20,1..20]of integer;
begin
write('Size: '); readln(r);
n:=1; k:=r; m:=r; l:=1; p:=1;
while n<=r*r do
begin for j:=l to k do begin if j=l then i:=j; a[ i,j]:=n; inc(n); end;
j:=k; dec(k); inc(p); for i:=p to m do begin a[ i,j]:=n; inc(n); end;
i:=m; dec(m); for j:=k downto l do begin a[ i,j]:=n; inc(n); end;
j:=l; inc(l); for i:=m downto p do begin a[ i,j]:=n; inc(n); end;
end;
for i:=1 to r do begin for j:=1 to r do write(a[i,j]:4); writeln; end; readln
end.
*дон !!!
*дон !!!
51 504
я когда-то формулу выводил...
Иван Аручак
Иван Аручак
38 447

Похожие вопросы