C/C++

Помогите с программой

Составить программу с использованием функций на базе этого задания: дана целочисленная матрица размером n*m. Найти максимальный по модулю элемент среди отрицательных элементов нечетных столбцов.
Вводишь матрицу, идешь по нечетным столбцам и ищешь максимальный abs(a[i][j]) если число отрицательно
Алексей Леонтьев
Алексей Леонтьев
34 935
Лучший ответ
#include <iostream>
#include <random>
#include <iomanip>
using namespace std;
unsigned integer(const char* msg) {
cout << msg;
unsigned value;
cin >> value;
cin.ignore(cin.rdbuf()->in_avail());
return value;
}
int main() {
const auto tab = 4U;
const auto left = -99;
const auto right = 99;
uniform_int_distribution<> uid(left, right);
mt19937 gen{ random_device()() };
auto n = integer(" n: ");
auto m = integer(" m: ");
puts("");
auto matrix = new int* [n];
for (auto i = 0U; i < n; ++i) {
matrix[i] = new int[m];
for (auto j = 0U; j < m; ++j) {
matrix[i][j] = uid(gen);
cout << setw(tab) << matrix[i][j];
}
puts("");
}
puts("");
bool flag = false;
auto a = 0U;
auto b = 0U;
auto min = left;
for (auto j = 0U; j < m; j += 2) {
for (auto i = 0U; i < n; ++i) {
if (matrix[i][j] < 0 && abs(matrix[i][j]) < abs(min)) {
min = matrix[i][j];
a = i;
b = j;
if (!flag) flag = !flag;
}
}
}
if (!flag) puts(" Not found!");
else cout << " matrix[" << a << "][" << b << "] = " << min << '\n';
for (auto i = 0U; i < n; ++i) delete[] matrix[i];
delete[] matrix;
system("pause > nul");
}