Заполнить массив по спирали начиная с середины - C (СИ)

Формулировка задачи:

Всем привет, уже месяц мучаюсь над одной задачей Условие:Дано число n. Создайте массив A[2*n+1][2*n+1] и заполните его по спирали, начиная с числа 0 в центральной клетке A[n+1][n+1]. Спираль выходит вверх, далее закручивается против часовой стрелки.При n=2 должен выводить 12 11 10 9 24 13 2 1 8 23 14 3 0 7 22 15 4 5 6 21 16 17 18 19 20 Ребят пожалуйста помогите)

Код к задаче: «Заполнить массив по спирали начиная с середины - C (СИ)»

textual
#include <stdio.h>
 
int main() {
    int n;
    printf("n? ");
    scanf("%d", &n);
    int s = 2 * n;
    int a[s + 1][s + 1];
    int c = (s + 1) * (s + 1) - 1;
    a[n][n] = 0;
    for (int k = 0; k <= n; ++k) {
        for (int i = k; i < s - k; ++i) a[i][s - k] = c--;
        for (int i = k; i < s - k; ++i) a[s - k][s - i] = c--;
        for (int i = k; i < s - k; ++i) a[s - i][k] = c--;
        for (int i = k; i < s - k; ++i) a[k][i] = c--;
    }
    for (int i = 0; i <= s; ++i) {
        for (int j = 0; j <= s; ++j) printf("%4d", a[i][j]);
        puts("");
    }
}

10   голосов, оценка 3.900 из 5


СОХРАНИТЬ ССЫЛКУ