Вывод матрицы на экран - C (СИ)
Формулировка задачи:
Требуется вывести на экран вот такую матрицу:
У меня получается ее выводить в таком виде при размерности 7х7 (программировал по диагоналям), но проблема в том, что при расширении она должна продолжаться, а у меня хоть 11х11, хоть 17х17 выводится именно такая, с этими же числами. Не получается от них не зависеть. Помогите, пожалуйста. Размерность должна быть нечетным числом от 3 до 23.
Решение задачи: «Вывод матрицы на экран»
textual
Листинг программы
#include <stdio.h>
#define SIZE 7
int a[SIZE][SIZE];
int main()
{
int i, j, border;
int x = SIZE / 2 + 1, y = SIZE / 2 + 1, curr = 1, dx = -1, dy = -1;
int count = 0;
while(curr - 1 < ((SIZE + 1) / 2) * ((SIZE + 1) / 2))
{
border = ((SIZE + 1) / 2 - count - 1);
while((dx < 0 && x > 0) || (dx > 0 && x < border))
a[y += dy][x += dx] = curr++;
count += (dy < 0 ? 1 : 0);
x += dx; y += dy; y += 1;
dx = -dx; dy = -dy;
}
for(i = 0; i < SIZE; i++)
{
for(j = 0; j < SIZE; j++)
printf("%3d", a[i][j]);
printf("\n");
}
return 0;
}