C/C++

Помогите пожалуйста не понимаю как делать. Буду очень благодарен

Заполните двумерный числовой массив М (7,7) случайными целыми числами в интервале [-6; 8]. Выведите значения элементов массива в виде матрицы. Ответ каждой задачи следует выводить с новой строки и с пояснительным текстом. Кроме того, следует каждый раз производить вывод массива на экран, если в нём произошли изменения: перестановка, замена, изменение значения элементов и т. д.

Задача 1.
Найдите произведение отрицательных элементов четвёртого столбца.
Задача 2.
Определите сумму элементов нечётных элементов массива.
Задача 3.
Замените элементы, имеющие нечётное значение и стоящие на главной диагонали, на цифру 2.
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <numeric>
#include <ctime>
using namespace std;

int main() {
const int SIZE = 7;
int matrix[SIZE][SIZE];
srand(time(0));
for (auto& ar : matrix) generate(ar, ar + SIZE, [](){return rand() % 15 - 6;});

cout << "The generated matrix:\n";
for(const auto& ar : matrix) {
for_each(ar, ar + SIZE, [](int i){cout << setw(5) << i;});
cout << "\n";
}

int product = 1;
for (const auto& ar : matrix) if (ar[4] < 0) product *= ar[4];

cout << "\n1. The product of the negative elements of the fourth column is " << product << "\n";

int sum = 0;
for (const auto& ar : matrix) {
sum += accumulate(ar, ar + SIZE, 0, [](int a, int b) {return ~b & 1? a + b : a;});
}

cout << "\n2. The sum of the odd elements of the matrix is " << sum << "\n";

cout << "\n3. The modified matrix:\n";
for (int i = 0; i < SIZE; ++i) {
for (int j = 0; j < SIZE; ++j) {
if (i == j && matrix[i][j] < 0) matrix[i][j] = 2;
cout << setw(5) << matrix[i][j];
}
cout << "\n";
}

return 0;
}
أسعد
أسعد
6 243
Лучший ответ