C/C++

Программирование матриц на С++

БЕЗ ПРОВЕРКИ КОРРЕКТНОСТИ ВВОДА ДАННЫХ
ЛАБОРАТОРНАЯ РАБОТА НЕ ПРИНИМАЕТСЯ НА ПРОВЕРКУ
1) Дана вещественная матрица размера N×M. Вычислить среднее значение всех
положительных элементов, сумма индексов которых является четным числом.
Найденное значение вывести на экран.
2) Дана целочисленная матрица размера N×M. Поменять местами строки матрицы,
с минимальной и максимальной суммой отрицательных элементов.
Полученную матрицу вывести на экран.
1)
int count = 0;
double sum = 0;
double arr[N][M]; // инициилизируешь сам массив каким угодно способом
for(int i = 0; i < N; i++)
{
    for(int j = 0; j < M; j++)
    {
        if ((i + j) % 2 == 0 && arr[i][j] > 0)
        {
            sum += arr[i][j];
            count +=1;
        }
    }
}
cout << sum / count << endl;
МН
Миха Наперов
73 465
Лучший ответ
// 1 задание
#include <iomanip>
#include <iostream>
#include <string>
using namespace std;
unsigned length(const char* msg, const unsigned limit = numeric_limits<unsigned>::max()) {
string tmp;
auto value = 0LL;
do {
cout << msg;
cin >> tmp;
try {
value = stoul(tmp);
} catch (...) {
cin.clear();
}
cin.ignore(numeric_limits<streamsize>::max(), '\n');
} while (value <= 0LL || value > limit);
return static_cast<unsigned>(value);
}
double element() {
string tmp;
auto value = 0.0;
while (true) {
cin >> tmp;
try {
value = stod(tmp);
return value;
} catch (...) {
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
}
}
int main() {
const auto nm = 10U;
double matrix[nm][nm] = { 0.0 };
auto n = length("n: ", nm);
auto m = length("m: ", nm);
for (auto i = 0U; i < n; ++i) {
for (auto j = 0U; j < m; ++j) {
matrix[i][j] = element();
}
}
auto sum = 0.0;
auto count = 0U;
for (auto i = 0U; i < n; ++i) {
for (auto j = 0U; j < m; ++j) {
if (matrix[i][j] > 0 && ~(i + j) & 1) {
sum += matrix[i][j];
++count;
}
}
}
auto avg = sum / count;
cout << "average: " << avg << '\n';
system("pause > nul");
}