@AlexB_49
Студент

Как изменить код, чтобы заполнялась нижняя заштрихованная треугольная часть квадратной матрицы вместо верхней на С++?

Суть задания: заполнить заштрихованную область квадратной матрицы единицами, а все остальное — нулями. Я нашел похожую задачу на С, только там нужно заполнить верхнюю область. Вот код:

#include <stdio.h>
 
#define N 5
 
int main()
{
    int Matr[N][N];
    int i,j;
    
    for (i=0; i<N; i++)
    {
        for (j=0; j<N; j++) 
        {
            if (i <= N/2)
            {
                if ((j>=i) && (j<(N-i)))   
                    Matr[i][j]=1;
                else
                    Matr[i][j]=0;
            }
            else
                Matr[i][j]=0;
        }
            
    }

    for (i=0; i<N; i++)
    {
        for (j=0; j<N; j++) printf("%d ",Matr[i][j]);
        printf("\n");
    }
    return 0;
}


Я только знаю, что нужно изменить if (i <= N/2) на if (i >= N/2). А вот что нужно изменить тут if ((j>=i) && (j<(N-i))) не догадываюсь, потому что не до конца понимаю логику. Помогите мне это исправить, чтобы заполнялась вот эта заштрихованная серым область: 603b8864526de648845906.png.
  • Вопрос задан
  • 379 просмотров
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Диагональ, которая идет слева сверзу вниз вправо - это j == i. Вторая диагональ - это j == n-1-i.

Соответственно, штриховка это когда j лежит между n-1-i и i включительно. Надо оба знака развернуть. Только сначала замените < N... на <= N-1...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы