Matrix15. Дана квадратная матрица $$A$$ порядка $$M$$ ($$M$$ — нечетное число). Начиная с элемента $$A_{1,1}$$ и перемещаясь по часовой стрелке, вывести все ее элементы по спирали: первая строка, последний столбец, последняя строка в обратном порядке, первый столбец в обратном порядке, оставшиеся элементы второй строки и т. д.; последним выводится центральный элемент матрицы.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#include <stdio.h> int main(void) { int a[10][10]; int m; printf("M: "); scanf("%i",&m); int i,j; for (i=0; i<m; ++i){ printf("%i : \n", i+1); for (j=0; j<m; ++j){ printf("%i : ", j+1); scanf("%i", &a[i][j]); } } int i2; for (i2=0; i2<m/2; ++i2){ for (i=i2; i<m-i2; ++i){ printf(" %i", a[i2][i]);} for (j=i2+1; j<=m-i2-1; ++j){ printf(" %i", a[j][m-i2-1]);} for (i=m-i2-2; i>=i2; --i){ printf(" %i", a[m-i2-1][i]);} for (j=m-i2-2; j>=i2+1; --j){ printf(" %i", a[j][i2]);} printf("\n"); } printf(" %i\n", a[m / 2][m / 2]); return 0; } |
Другие задачи из раздела Matrix можно посмотреть здесь.
Комментарии: