Вопрос задан 12.02.2026 в 13:59. Предмет Информатика. Спрашивает Лукьянцева Таня.

Дана матрица. Вычислить сумму и число положительных элементов, находящихся под главной диагональю. Вывести матрицу, сумму и число.

Перейти к ответам

Ответы на вопрос

Отвечает Матюхин Анатолий.

Нужно найти положительные элементы, расположенные ниже главной диагонали матрицы, то есть элементы с индексами (i, j), для которых выполняется условие:

  • i > j (ниже главной диагонали),

  • и a[i][j] > 0 (положительный).

Дальше:

  • считаем их сумму,

  • считаем их количество,

  • выводим саму матрицу, затем сумму и число.


Как понять “под главной диагональю”

Главная диагональ — это элементы, где i = j (левый верхний → правый нижний).

Пример для 4×4 (X — главная диагональ, “под диагональю” отмечено *):

css
X . . . * X . . * * X . * * * X

Значит, берём только элементы:

  • во 2-й строке: 1-й столбец

  • в 3-й строке: 1–2 столбцы

  • в 4-й строке: 1–3 столбцы
    и т.д.


Алгоритм (шаги)

Пусть матрица размера n × m (чаще всего квадратная n×n, но условие i>j корректно работает и для прямоугольной, пока j не выходит за границы).

  1. Ввести (или иметь) матрицу a.

  2. Завести:

    • sum = 0

    • count = 0

  3. Пройти по всем элементам ниже диагонали:

    • для i от 0 до n-1

    • для j от 0 до min(i-1, m-1)

  4. Если a[i][j] > 0, то:

    • sum += a[i][j]

    • count += 1

  5. Вывести матрицу, затем sum и count.


Пример на Python

python
n = int(input("Введите n: ")) a = [] for i in range(n): row = list(map(int, input().split())) a.append(row)

s = 0 k = 0

# ниже главной диагонали: i > j for i in range(n): for j in range(i): # j = 0 .. i-1 if a[i][j] > 0: s += a[i][j] k += 1

print("Матрица:") for row in a: print(*row)

print("Сумма положительных под диагональю:", s) print("Количество положительных под диагональю:", k)


Пример на C++

cpp
#include using namespace std;

int main() { int n; cin >> n; int a[100][100];

for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) cin >> a[i][j];

long long sum = 0; int count = 0;

for (int i = 0; i < n; i++) { for (int j = 0; j < i; j++) { // i > j if (a[i][j] > 0) { sum += a[i][j]; count++; } } }

cout << "Matrix:\n"; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) cout << a[i][j] << " "; cout << "\n"; }

cout << "Sum = " << sum << "\n"; cout << "Count = " << count << "\n"; return 0; }


Короткая проверка на примере

Матрица 3×3:

diff
1 -2 3 4 5 -6 -7 8 9

Ниже диагонали (i>j): элементы 4, -7, 8
Положительные среди них: 4 и 8
Сумма = 12, количество = 2.


Итог: условие “под главной диагональю” — это i > j, и дальше суммируем/считаем только те элементы, которые строго больше нуля.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос