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

Как вывести масив 5 на 5 по спирали? Абсолютно любые значения, главное это вывод по порядку. Pascal, Java или C

Алексей Кулиш
Алексей Кулиш
6 013
Для 5 по аналогии

public class Task {
public static void main(String[] args) {
final int size = 3;
int[] array = new int[size * size];

for (int i = 0; i < size * size; i++)
array[i] = i + 1;

int[][] result = toSpiral(array, size);

for (int i = 0; i < size; i++, System.out.println())
for (int j = 0; j < size; j++)
System.out.print(result[i][j] + " ");
}

public static int[][] toSpiral(final int[] array, int size) {
int[][] res = new int[size][size];

int index = 0;

if (size == 3) {
for (int i = 0; i < size; i++)
res[i][0] = array[index++];

for (int j = 1; j < size; j++)
res[size - 1][j] = array[index++];

for (int i = size - 2; i > -1; i--)
res[i][size - 1] = array[index++];

for (int j = size - 2; j > 0; j--)
res[0][j] = array[index++];

for (int i = 1; i < size - 1; i++)
res[i][1] = array[index++];
}

return res;
}
}
С.
Сашка .
1 530
Лучший ответ
С++
pair < int, int > addr[]={pair(0,0), pair(0,1) ...итд }

использование
for(i:addr)cout<<arr[i.first][i.second]<<" ";
Universiti Crew
Universiti Crew
64 039
Лев Елизаров Мне нравится эта задача!
program spiral; uses crt;
var i,j,l,k,p,m,n,r:integer; a:array[1..30,1..30]of integer;
begin
write('N (<=30): '); 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.
АС
Андрей С
95 955