Заполнить секторы матрицы, которые лежат влево и вправо от главной и побочной диагоналей - C (СИ) (74839)
Формулировка задачи:
Требуется помощь с задачей.
Заполнить секторы матрицы, которые лежат влево и вправо от главной и побочной диагоналей, ЛП, от левого угла вниз - вправо. Остаток матрицы заполнить нулями.
пример того что должно получиться:
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 26 2 8 0 0 0 0 0 21 27 3 9 13 0 0 0 18 22 28 4 10 14 16 0 17 19 23 29 5 11 15 0 0 0 20 24 30 6 12 0 0 0 0 0 25 31 7 0 0 0 0 0 0 0 32 0 0 0 0 0 0 0 0 0
Решение найдено
#include <stdio.h>
int main()
{
int a[100][100], n, t=1, i, j;
printf("n= ");
scanf("%d", &n);
for(j=0; j<n; j++)
for(i=0; i<n; i++)
if((j<i && i<n/2) || (j<n-i-1 && i>=n/2) || (j>n-i-1 && i<n/2) || (j>i && i>=n/2))
a[i][j]=t++;
else
a[i][j]=0;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
printf("%4d", a[i][j]);
printf("\n");
}
return 0;
}Решение задачи: «Заполнить секторы матрицы, которые лежат влево и вправо от главной и побочной диагоналей»
textual
Листинг программы
if ((i>j && i<n-1-j) || (j>n-1-i && j>i))
Объяснение кода листинга программы
В данном коде выполняется условие для заполнения элементов матрицы. Если условие выполняется, то происходит заполнение. Вот объяснение этого условия:
i>j- это условие означает, что элемент матрицы, который мы хотим заполнить, находится левее, чем элемент, с которым мы его сравниваем.i<n-1-j- это условие означает, что элемент матрицы, который мы хотим заполнить, находится правее, чем элемент, с которым мы его сравниваем.j>n-1-i- это условие означает, что элемент матрицы, который мы хотим заполнить, находится ниже, чем элемент, с которым мы его сравниваем.j>i- это условие означает, что элемент матрицы, который мы хотим заполнить, находится правее и ниже, чем элемент, с которым мы его сравниваем. Если все эти условия выполняются, то происходит заполнение элемента матрицы.