Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
VesperAce
0 / 0 / 1
Регистрация: 06.11.2016
Сообщений: 4
1

Подсчет сумм диагоналей матрицы

15.11.2016, 23:26. Просмотров 174. Ответов 2
Метки нет (Все метки)

Доброе время суток. Сижу очень долго над задачей. Нашел решение. Но не могу понять простой код.
Можете на пальцах объяснить что делает этот код в задаче , где задан двумерный массив ( уже заполненная квадратичная матрица) и не обходимо найти минимальную сумму диагоналей матрицы.
C++
1
2
3
4
5
6
7
8
9
10
11
for (int i = 1; i < m; i++) {
        int t1 = 0;
        int t2 = 0;
        for (int j = 0; j < m - i; j++) {
            t1 += mat[i + j][j];
            if ((i + j) == (m + 1)) 
                t2 += mat[j][i + j];
            if (t1 < sum1) 
                sum1 = t1;
            if (t2 < sum1)
                sum1 = t2;
Вопросов так мало как и моего понимания. Кроме того, что тут делают, каким инициализируют sum1.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2016, 23:26
Ответы с готовыми решениями:

Элементы диагоналей матрицы заменить максимум среди сумм диагоналей
Написать программу, которая вычисляет максимум среди сумм диагоналей матрицы и...

Найти минимум среди сумм модулей элементов диагоналей матрицы, параллельных побочной диагонали матрицы
Дана целочисленная квадратная матрица. Определить: 2) Минимум среди сумм...

Подсчёт сумм диагоналей матрицы
Здравствйте! Вот такая задача: Для заданной целлочисленной квадратной матрицы...

Найти максимум сумм диагоналей матрицы
полное задание: Дана целочисленная квадратная матрица. Определить: 1)...

Максимум среди сумм элементов диагоналей матрицы: исправить
Задача, выводит максимум среди сумм элементов диагоналей матрицы. Помогите,...

2
isst
27 / 27 / 29
Регистрация: 04.01.2015
Сообщений: 116
16.11.2016, 00:36 2
Щас сделаю

Добавлено через 7 минут
В этом коде считают сумму элементов диагонали, параллельной главной, будь диагональ ниже или выше главной. А вот sum1 каким инициализируют, мне тоже неясно. Допускаю, что это лишь фрагмент полной программы. Вот комментарии:
C++
1
2
3
4
5
6
7
8
9
10
11
for (int i = 1; i < m; i++) { //запускаем цикл для i от 1 до m не включая
        int t1 = 0; //объявляем целую t1 = 0
        int t2 = 0; //объявляем целую t2 = 0
        for (int j = 0; j < m - i; j++) { //запускаем цикл для j от 0 до m - i не включая
            t1 += mat[i + j][j]; //увеличиваем t1 на mat[i + j][j], то есть прибавляем к t1 элемент диагонали
            if ((i + j) == (m + 1))  //если i + j равно m + 1
                t2 += mat[j][i + j]; //увеличиваем t2 на mat[j][i + j], то есть прибавляем к t1 элемент диагонали
            if (t1 < sum1) //если t1 < sum 
                sum1 = t1; //заменяем сумму значением t1
            if (t2 < sum1) //если t2 < sum 
                sum1 = t2; //заменяем сумму значением t2
0
VesperAce
0 / 0 / 1
Регистрация: 06.11.2016
Сообщений: 4
16.11.2016, 11:15  [ТС] 3
Цитата Сообщение от isst Посмотреть сообщение
Щас сделаю

Добавлено через 7 минут
В этом коде считают сумму элементов диагонали, параллельной главной, будь диагональ ниже или выше главной. А вот sum1 каким инициализируют, мне тоже неясно. Допускаю, что это лишь фрагмент полной программы. Вот комментарии:
C++
1
2
3
4
5
6
7
8
9
10
11
for (int i = 1; i < m; i++) { //запускаем цикл для i от 1 до m не включая
        int t1 = 0; //объявляем целую t1 = 0
        int t2 = 0; //объявляем целую t2 = 0
        for (int j = 0; j < m - i; j++) { //запускаем цикл для j от 0 до m - i не включая
            t1 += mat[i + j][j]; //увеличиваем t1 на mat[i + j][j], то есть прибавляем к t1 элемент диагонали
            if ((i + j) == (m + 1))  //если i + j равно m + 1
                t2 += mat[j][i + j]; //увеличиваем t2 на mat[j][i + j], то есть прибавляем к t1 элемент диагонали
            if (t1 < sum1) //если t1 < sum 
                sum1 = t1; //заменяем сумму значением t1
            if (t2 < sum1) //если t2 < sum 
                sum1 = t2; //заменяем сумму значением t2
Все бы хорошо, но то, что в описал почти понятно. Проблема в том , зачем выполняются некоторые сложения
Уже ясно, что при i=1 суммируется одна из диагоналей ниже главной , при i=2 другая.
Но остается вопрос, что же с треугольником выше диагонали?
А так же - Что это за условие
if ((i + j) == (m + 1))
t2 += mat[j][i + j].
Sum1 хочется инициализировать как 0, так как это меньшая из возможных сумм, но программа с sum1=0 так его и не изменяет.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_CTYPE, "rus");
    int n; int m;
    cout << "Введите размер массива";
    cin >> m;
    int **mat = new int *[m];
    for (int i = 0; i < m; i++)
        mat[i] = new int[m];
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < m; j++)
        {
            mat[i][j] = rand() % 10;
            cout << mat[i][j] << " ";
        }
        cout << endl;
    }
    int sum1 = 0;
    for (int i = 1; i < m; i++) {
        int t1 = 0;
        int t2 = 0;
        for (int j = 0; j < m - i; j++) {
            t1 += mat[i + j][j];
            if ((i + j) == (m + 1)) 
                t2 += mat[j][i + j];
            if (t1 < sum1) 
                sum1 = t1;
            if (t2 < sum1)
                sum1 = t2;
        }
    }
    cout << sum1;
        return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.11.2016, 11:15

Определить максимум среди сумм элементов диагоналей матрицы
Дана целочисленная квадратная матрица. Определить максимум среди сумм...

Максимум среди сумм элементов диагоналей, параллельной главной диагонали матрицы
int i,j, max = 0,sum = 0,index = n-1,dlina = 1; while(index) { ...

Найти максимум из сумм элементов диагоналей, параллельных главной диагонали матрицы
1.дана квадратная матрица целых чисел размера N. Найти максимум из сумм...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru