Заполнение матрицы по алгоритму - C (СИ)
Формулировка задачи:
Не выходить заполнить матрицу вот таким способом.
Если можно, напишите код либо обьясните алгоритм, никак не получается.
Решение задачи: «Заполнение матрицы по алгоритму»
textual
Листинг программы
#include<stdio.h>
#define size 9
void main(void) {
int a[size][size];
int i, j, k, l;
k = 1;
l = 0;
for (i = 0; i < size; i++) {
for (j = 0; j < size; j++) {
if ((j < l) || (j >= size - l)) {
a[j][i] = k++;
} else {
a[j][i] = 0;
};
};
if (i < (int)(size / 2)) l++; else l--;
};
for (i = 0; i < size; i++) {
for (j = 0; j < size; j++)
printf("%2i ", a[i][j]);
printf("\n");
};
}
Объяснение кода листинга программы
В этом коде заполняется двумерный массив по определенному алгоритму.
- Создается двумерный массив a размером 9х9 и четыре переменные i, j, k, l, которые будут использоваться в циклах.
- Переменные k и l инициализируются единицей, а переменная i не инициализируется.
- Два вложенных цикла заполняют массив a. Первый цикл идет по строкам, а второй по столбцам.
- Условие if в вложенном цикле проверяет, что значение j меньше l или j больше размера массива a, уменьшенного на l, и присваивает элементу a[j][i] значение k, увеличивая k на единицу. В противном случае, присваивает значение 0.
- После завершения циклов, значение переменной i проверяется на меньше половины размера массива a, и если это так, то значение l увеличивается на единицу, иначе уменьшается на единицу.
- Два вложенных цикла выводят значения массива a на экран.
- В конце программы не указаны символы новой строки, поэтому можно предположить, что код продолжается и после вывода массива a.