Посчитать сумму отрицательных и нечетных чисел из матрицы

Рейтинг: -1Ответов: 1Опубликовано: 22.04.2023

Если в строке if (Matrix[i][j] % 2 == 1 && Matrix[i][j] < 0) оставить только 1 любое условие - программа отлично работает, но стоило добавить либо Matrix[i][j] % 2 == 1, либо Matrix[i][j] < 0 - программа говорит, что sum = 0.

Вот сам код:

#include <iostream>
#include <ctime>
#include <cmath>

using namespace std;

void CreateMatrix(int** Matrix) {
    for (int i = 0; i < 7; i++) Matrix[i] = new int[7];
}

void FillArray(int** Matrix) {
    for (int i = 0; i < 7; i++) {
        for (int j = 0; j < 7; j++) {
            Matrix[i][j] = 1 + rand() % 9;
            if (rand() % 4 == 0) Matrix[i][j] *= -1;
        }
    }
}
void PrintArray(int** Matrix) {
    for (int i = 0; i < 7; i++) {
        for (int j = 0; j < 7; j++) {
            if (Matrix[i][j] > 0) cout << " ";
            cout << Matrix[i][j] << "\t";
        }
        cout << endl;
    }
}

void PrintSum(int** Matrix) {
    int sum = 0;
    for (int i = 0; i < 7; i++)
        for (int j = 0; j < 7; j++)
            if (Matrix[i][j] % 2 == 1 && Matrix[i][j] < 0)
                sum += abs(Matrix[i][j]);
    cout << endl << "Sum of all negative odd numbers: " << sum << endl;
}

int main() {
    srand(time(NULL));
    int** A = new int* [7];
    CreateMatrix(A);
    FillArray(A);
    PrintArray(A);
    PrintSum(A);
    return 0;
}

Ответы

▲ 1Принят

Выведите

cout << (-5 % 2);

Думаю, результат — -1 — вас удивит, правда? :)

Так что исправьте условие просто на

Matrix[i][j] % 2 && Matrix[i][j] < 0

P.S. Кстати, вам надо посчитать сумму таких чисел, или сумму модулей таких чисел?