Polonium123456789
Новичок
|
Паскаль. Надо из чисел сделать спираль..Прога есть, и она делает спираль, но надо чтобы минимальное число было в середине, а у меня в середине максимальное. Знаю, что нелегко, но прошу помощи, реально!! Вот прога: program spiral; const n=5; Type x_type=array [1..n, 1..n] of integer; Var x:x_type; f,g:text; i,j,xx,yy,k,p,z,lx,ly:integer; begin assign (f,'Input.txt'); reset (f); assign (g,'Output.txt'); rewrite (g); if n mod 2=0 then begin lx:=1; ly:=0; end else begin lx:=1; ly:=1; end; for i:=1 to n do begin yy:= (n div 2)+ly-j; for j:=1 to n do begin xx:=(n div 2)+lx-i; if abs(xx)>abs(yy) then k:=abs(xx) else k:=abs(yy); if xx>yy then p:=-1 else p:=1; x [i,j]:= n*n-(sqr(2*k)+p*(2*k+xx+yy)); end; end; if n mod 2=0 then begin for i:=1 to n div 2 do for j:=1 to n do begin z:= x[i,n-j+1]; x[i,n-j+1]:=x[i,j]; x[i,j]:=z; end; end; for i:=1 to n do begin for j:=1 to n do write (g,x[i,j]:3); writeln (g); end; close (f); close (g); end. и в ней показывается так: 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 А НАДО ЧТОБЫ БЫЛО ТАК (против часовой стрелки): 13 12 11 10 25 14 3 2 9 24 15 4 1 8 23 16 5 6 7 22 17 18 19 20 21
|