Загрузка данных
#include <iostream>
#include <clocale>
using namespace std;
int main() {
setlocale(LC_ALL, "ru");
int n, m, choice;
bool b = true;
cout << "Введите количество строк: "; cin >> n;
cout << "Введите количество столбцов: "; cin >> m;
int mas[n][m];
cout << "Введите элементы матрицы:\n";
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cout << "mas[" << i + 1 << "][" << j + 1 << "] = ";
cin >> mas[i][j];
}
}
cout << "\nМатрица:\n";
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cout << mas[i][j] << "\t";
}
cout << endl;
}
while (b)
{
cout << "\nМеню выбора:\n";
cout << "1 - вывести k-ю строку и p-й столбец\n";
cout << "2 - средний балл группы\n";
cout << "3 - заменить нечетные элементы на наибольший\n";
cout << "4 - строка с наибольшим количеством нулей\n";
cout << "5 - отразить матрицу относительно главной диагонали\n";
cout << "0 - выход\n\nВыбор: ";
cin >> choice;
switch (choice)
{
case 1: {
int k, p;
cout << "Введите номер строки k: "; cin >> k;
cout << "Введите номер столбца p: "; cin >> p;
if (k >= 1 && k <= n && p >= 1 && p <= m)
{
cout << k << "-я строка: ";
for (int j = 0; j < m; j++)
{
cout << mas[k - 1][j] << " ";
}
cout << endl;
cout << p << "-й столбец: ";
for (int i = 0; i < n; i++)
{
cout << mas[i][p - 1] << " ";
}
cout << endl;
}
else
{
cout << "Такой строки или столбца нет" << endl;
}
break;
}
case 2: {
float sum = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
sum += mas[i][j];
}
}
cout << "Средний балл группы: " << sum / (n * m) << endl;
break;
}
case 3: {
int tmp[n][m];
int max = mas[0][0];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (mas[i][j] > max) max = mas[i][j];
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
tmp[i][j] = mas[i][j];
if (tmp[i][j] % 2 != 0) tmp[i][j] = max;
}
}
cout << "Наибольший элемент: " << max << endl;
cout << "Матрица после замены:\n";
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cout << tmp[i][j] << "\t";
}
cout << endl;
}
break;
}
case 4: {
int maxNul = 0, nomer = 0;
for (int i = 0; i < n; i++)
{
int nul = 0;
for (int j = 0; j < m; j++)
{
if (mas[i][j] == 0) nul++;
}
if (nul > maxNul)
{
maxNul = nul;
nomer = i + 1;
}
}
if (maxNul > 0)
cout << "Больше всего нулей в строке №" << nomer << " (нулей: " << maxNul << ")" << endl;
else
cout << "В матрице нет нулей" << endl;
break;
}
case 5: {
if (n == m)
{
int tmp[n][m];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
tmp[i][j] = mas[j][i];
}
}
cout << "Отраженная матрица:\n";
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cout << tmp[i][j] << "\t";
}
cout << endl;
}
}
else
{
cout << "Матрица не квадратная, отразить нельзя" << endl;
}
break;
}
case 0: {
cout << "Выход из программы ...";
b = false;
break;
}
default: {
cout << "Введено неправильное значение, попробуйте еще раз!" << endl;
break;
}
}
}
return 0;
}