Найти произведение чисел от 1 до 10, расположенных на диагоналях квадратной матрицы с нечетным количеством строк и столбцов

Если задать нечетное число для размера матрицы, элемент (который > 0) на пересечении диагоналей матрицы подсчитывается 2 раза при умножении элементов диагоналей. А нужно только 1 раз.

multi / array[n/2][n/2]; - переменная для хранения умножения почему-то не делится на этот элемент.

Подскажите, пожалуйста, как исправить?

#include <iostream>
using std::cout;
using std::cin;
using std::endl;

int main () {
    cout << "Введите n: ";
    int n = 0;
    cin >> n;
    
    //создание массива
    srand(time(0));
    int** array = new int* [n];
    for (int i = 0; i < n; i++) {
        array[i] = new int[n];
        for (int j = 0; j < n; j++) {
            array[i][j] = -10 + rand() % (10 * 2) + 1;
            cout << array[i][j] << "\t";
        }
        cout << endl;
    }
    
    //находим произведение 
    int multi = 1;
    for (int i = 0; i < n; i++) {
        if (array[i][i] >= 1 && array[i][i] <= 10)
            multi *= array[i][i];
        if (array[i][n - i - 1] >= 1 && array[i][n - i - 1] <= 10)
            multi *= array[i][n - i - 1];
    }

    /*если матрица с нечетным количеством элементов, цикл выше умножает 2 раза на элемент,
    находящийся на пересечении диагоналей*/
    if (n % 2 != 0)
        multi / array[n / 2][n / 2];
    cout << "\nПроизведение чисел от 1 до 10 на диагоналях: " << multi;

    for (int i = 0; i < n; i++) {
        delete[] array[i];
    }
    delete[] array;
    return 0;
}

Ответы (1 шт):

Автор решения: Mikhailo

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

→ Ссылка