Ю4.32

Суммы по косой. Просуммировать элементы матрицы [latex]A(n,n)[/latex] по каждой из линий , параллельных главной диагонали. Напечатать полученные суммы.

Матрица Суммы
1 2 3
4 5 6
7 8 9
7 12 15 8 3
-1 2 -3 4
10 5 11 6
-7 8 -9 2
12 5 13 6
12 -2 31 1 15 3 4
0 0
0 0
0 0 0

Код программы:

Сначала вводим размер квадратной матрицы —  [latex]n[/latex]. Создаем одномерный массив [latex]b[/latex] в который будет результат. В нем будет [latex]2n-1[/latex] элементов, которые мы заполняем нулями.После чего в цикле будем накапливать суммы [latex]b[i-j+n-1]+=a[i][j].[/latex].

При  [latex]i=j[/latex], мы записываем сумму диагоналей в  [latex]b[n-1][/latex], который находиться в середине нашего массива  [latex]b[/latex], как нам и нужно.
Если  [latex]i>j[/latex], мы записываем суммы в элементы после середины нашего массива [latex]b[/latex].
Если  [latex]i<j[/latex], мы записываем суммы в элементы до середины нашего массива [latex]b[/latex].
Константу, которая нам нужна, будем искать по формуле [latex] max(j) — min(i)[/latex], которая равна [latex]n-1[/latex].

Код программы можно посмотреть тут

Related Images:

7 thoughts on “Ю4.32

  1. — Вычитайте текст. Уберите орфографические ошибки, пробел перед запятой.
    — Что за странная метка «сумма диагоналей»?
    — Ненужно использовать третий вложенный цикл и условный оператор. Вместо

    должно быть

    Вместо «…» должна быть какая-то формула. Догадываетесь какая?

  2. Похоже, что формула i-j+n-1 верна. Тем более, что Ваша программа работает. Но Вы не объяснили эту формулу в отчете. Т.е. вы использовали намек Игоря Евгеньевича «какие значения может принимать i – j?» для того чтобы вывести формулу, а теперь можете использовать те же соображения, чтобы пояснить как получается эта формула.

    • Поэтому я и написал сначала другой алгоритм.Он был понятный.А этот алгоритм получен путем перебора возможных вариантов.

    • Подсказываю: i-j равно нулю на главной диагонали, чем выше главной диагонали, тем i-j меньше, а чем ниже тем i-j больше. Ну Игорь Евгеньевич дал же ключевую подсказку “какие значения может принимать i – j?” Подставьте минимальное значение i и максимальное значение j, получите некоторое минимальное значение i-j, которое соответствует верхнему правому элементу. Теперь его нужно записать в первый (или последний, как хотите) элемент массива b. Вы записываете в первый элемент, т.е. в b[0]. Значит, т.к. i-j получилось отрицательным для этого углового элемента, к нему нужно прибавить некоторую константу, равную модулю этого отрицательного значения, чтобы получить в результате 0. В итоге формула для индекса будет выглядеть, как i-j+c, где c — эта константа (имеется в виду, что она не зависит от i и j). Забегая наперед, мы видим по итоговой формуле, что эта константа равна n-1.
      Что ж, надеюсь теперь Вы поняли, как получается формула i-j+n-1 и сможете пояснить это в своем отчете.

  3. Засчитано, 8 баллов (октябрьское задание в ноябре).
    Но все же «Константу, которая нам нужна, будем искать по формуле max(j) — min(i), которая равна n-1.» — это предложение будет понятно или мне, или Вам, или тому кто прочтет все комментарии. Иначе, что за константа будет непонятно.

Добавить комментарий