Другие языки программирования и технологии

В матрице А (m, n) (m<=5, n<=7)найти произведение элементов столбика, в котором находится максимальный элемент.

Программа С++
Без rand.

#include <iostream>
#include <windows.h>
#include <vector>
#include <algorithm>
#include <iomanip>

using namespace std;

int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
system("color 0A");

size_t m, n;
for (;;)
{
cout << "Введите размеры матрицы ";
cin >> m >> n;
if (m <= 5 && n <= 7)
{
break;
}
else
{
cout << "m <= 5 и n <= 7" << endl;
}
}
vector<vector<int>> v(m);
auto gen = []()
{
int t;
cin >> t;
return t;
};
size_t i = 0u;
auto gen_str = [&gen, &n, i]() mutable
{
cout << "Введите в строку через пробел элементы " << ++i << " строки" << endl;
vector<int> temp(n);
generate(temp.begin(), temp.end(), gen);
return temp;
};
cout << "Введите элементы массива" << endl;
generate(v.begin(), v.end(), gen_str);
cout << endl;
cout << "Содержание исходной матрицы" << endl;
for (const auto &t : v)
{
for (const auto &e : t)
{
cout << setw(5) << e;
}
cout << endl;
}
cout << endl;
auto maxx = v[0u][0u];
for (const auto &t : v)
{
for (const auto &e : t)
{
maxx = e > maxx? e : maxx;
}
}
cout << "Максимальное значение элементов матрицы " << maxx << endl;
cout << endl;
cout << "Произведение значений элементов столбиков матрицы, содержащих максимум" << endl;
for (size_t u = 0u; u < n; ++u)
{
auto flag = false;
for (size_t p = 0u; p < m; ++p)
{
if (v[p][u] == maxx)
{
flag = true;
break;
}
}
if (flag)
{
cout << "Засекли максимум в столбике с индексом " << u;
auto pr = 1;
for (size_t p = 0u; p < m; ++p)
{
pr *= v[p][u];
}
cout << " произведение " << pr << endl;
}
}
cout << endl;

system("pause");
return 0;
}
Сергей Цветков
Сергей Цветков
8 552
Лучший ответ

Похожие вопросы