1

Тема: Масив

Не можу зрозуміти як знайти суму побічної діагоналі матриці, з головною все ок

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

void main()
{
    const int SIZE = 5;
    int M[SIZE][SIZE];

    for(int i = 0; i < SIZE; i++)
    {
        for(int j = 0; j < SIZE; j++)
        {
            M[i][j] = rand() % 10;
            cout << M[i][j] << "\t";
        }
        cout << endl;
    }
    cout << "----------------------------------" << endl;

    // для головної діагоналі сума елементів
    int dob1 = 1;
    int  j = 0;
    int  i = 0;
    while(j < SIZE)
    {
        dob1 = M[j][j] * dob1;
        j++;
    }

    cout << "dob1 = " << dob1 << endl;

    // для побічної діагоналі сума елементів
    int dob2 = 1;
    for(i = SIZE - 1, j = 0; i >= 0; i--, j++)
    {
        dob2 = M[i][j] * dob2;
        j++;
    }

    cout << "dob2 = " << dob2 << endl;
}

2

Re: Масив

Якщо вивести значення індексів при першому завданні (головною діагоналлю)

    int SIZE = 5;

    int j = 0;
    while (j < SIZE)
    {
        std::cout << j << j << "\n";
        j++;
    }

Будемо мати:
00
11
22
33
44

Тепер потрібно зробити побічну, якщо я правильно розумію, індекси мають виглядати так
04
13
22
31
40

Для цього ми будемо j віднімати, а і додавати при кожній ітерації
Один із варіантів

    int j = 4;
    int i = 0;
    while (j >= 0)
    {
        std::cout << i << j << "\n";
        j--;
        i++;
    }

Зараз зрозуміло ?

Подякували: koala, pluszz, leofun01, marta064

3

Re: Масив

"Дешевий і сердитий" варіант:

for(int i = 0; i < SIZE; ++i)
{
    M[i][i] //елемент головної діагоналі
    M[i][SIZE-i-1] //елемент побічної діагоналі
}
Подякували: Betterthanyou, pluszz, leofun01, marta064

4

Re: Масив

дякую дуже