Заполнить матрицу значениями вектора от центра по спирали: вниз - влево - вверх - C (СИ)

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

Помогите с заданием. Заполнить матрицу значениями вектора b1, b2, ..., b81 от центра по спирали: вниз - влево - вверх - вправо. (Примечание. На рисунке указаны индексы элементов вектора b.) Заранее спасибо.


textual

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

#include <stdio.h>
 
#define N 9
 
int main() {
    int a[N][N];           // матрица
    int i = 1, j, q, cnt;  // счетчики циклов
    int r, c;              // индексы строк / колонок
    int d = 0;             // направление движения
    r = c = N / 2;         // начальные индексы
    a[ r ][ c ] = i++;
    for (cnt = 1; cnt <= N; ++cnt) {
        for (q = 0; q < 2; ++q) {
            for (j = 0; j < cnt && i <= (N * N); ++j) {
                switch (d) {
                case 0: ++r; break;
                case 1: --c; break;
                case 2: --r; break;
                case 3: ++c; break;
                }
                a[ r ][ c ] = i++;
            }
            if (++d > 3) d = 0;
        }
    }
    return 0;
}
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.


СДЕЛАЙТЕ РЕПОСТ

12   голосов, оценка 4.167 из 5

Источник