Загрузка данных


#include <iostream>
#include <clocale>
#include <ctime>

using namespace std;

int main() {

    setlocale(LC_ALL, "ru");
    srand(time(0));

    int n, m, a, b, choice;
    bool f = true;

    cout << "Введите количество строк: "; cin >> n;
    cout << "Введите количество столбцов: "; cin >> m;
    cout << "Введите начало рандома: "; cin >> a;
    cout << "Введите конец рандома: "; cin >> b;

    int mas[n][m];

    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            mas[i][j] = (b - a) * rand() / RAND_MAX + a;
        }
    }

    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 (f)
    {
        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 << "Выход из программы ...";
            f = false;
            break;
        }

        default: {
            cout << "Введено неправильное значение, попробуйте еще раз!" << endl;
            break;
        }

        }
    }

    return 0;
}