@leonid14032004
Студент технического вуза

Как записать условие?

Задание
Если ни один из столбцов двумерного массива A не содержит два и более равных нулю элемента, найти сумму элементов массива A, лежащих на главной диагонали и выше неё


Подскажите пожалуйста:
1) Как выполнить это задание в коде? Какую формулу нужно составить , не совсем понимаю.
Знаю только как сосчитать столбцы в которых есть ноль.
int K = 0;
    bool F;
        for ( int j = 0; j < N; j++) {
            F = false; // начальное значение флажка
            for (int i = 0; i < N; i++) {
                if (A[i][j] == 0) F = true;
            }
            if (F == true) K++;
            cout << endl;
        }


2) Почему в данном фрагменте кода сначала записывается цикл со столбцами [j], а уже в нем цикл с [i]? Почему не наоборот?
  • Вопрос задан
  • 142 просмотра
Решения вопроса 2
@dima20155
you don't choose c++. It chooses you
Запишите изначальную матрицу как массив стобцов, содержащих строки, а не массив строк, содержащих элементы столбцов.
Ответ написан
wataru
@wataru Куратор тега Алгоритмы
Разработчик на С++, экс-олимпиадник.
Используйте флаги:

есть_столбец_с_нулями = ложь
Для каждого столбца j
  количество_нулей = ПодсчитатьКоличествоНулейВСтолбце(j)
  если количество_нулей >= 2 то
    есть_столбец_с_нулями = истина

Если есть_столбец_с_нулями
  НайтиСуммуЭлементовНадДиаганалью();


Функция для подсчета нулей в столбце простая - пройдитесь циклом по всем элементам столбца (по строкам). Если текущий элемент ноль - то увеличивайте счетчик.

Можно не писать отдельную функцию а просто воткнуть вложенный цикл.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
NikFaraday
@NikFaraday
Student full-stack Developer
int sum = 0;
for (int i = 0; i < N; i++)
{
   sum += A[i][i];
}

Вам ведь нужно найти сумму элементов на диагонали, там индексы строк и столбцов совпадают

По поводу второго вопрос, там скорее всего идёт проход не по строкам, а по столбцам (Имею ввиду о первом цикле)
Ответ написан
Ваш ответ на вопрос

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

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