Untitled

mail@pastecode.io avatar
unknown
plain_text
2 years ago
2.4 kB
4
Indexable
Never
#include <iostream>
#include <cstdlib>


//Сформировать в динамической памяти целочисленную матрицу
//размером n x m. Выполнить следующее преобразование матрицы: в каждой строке матрицы найти наибольшие и наименьшие элементы и поменять их местами.
// Указанные элементы считать единственными.
// Пользуясь указателями, вывести на экран адреса найденных минимальных и максимальных элементов. Вывести на экран исходную и полученную матрицы.
using namespace std;

int** init(int** a, int n, int m){
    for (int i = 0; i < n; i++){
        for (int j = 0; j < m; j++){
            a[i][j] = rand() % 10;
        }
    }
    return a;
}

void print(int** a, int n, int m){
    for (int i = 0; i < n; i++){
        for (int j = 0; j < m; j++){
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
}

int main() {
    int** a;
    int n, m;
    cout << "Введите кол-во строк" << endl;
    cin >> n;
    cout << "Введите кол-во столбцов" << endl;
    cin >> m;

    // выделяем динамически памятть
    a = new int* [n];
    for (int i = 0; i < n; i++){
        a[i] = new int[m];
    }

    a = init(a, n, m);
    cout << "Входная матрица" << endl;
    print(a, n, m);

    int min = 10, max = 0;
    int *minind, *maxind;
    for (int i = 0; i < n; i++){ // итерируемся по строкам
        for (int j = 0; j < m; j++){ // итерируемся по столбцам
            if (a[i][j] > max){
                max = a[i][j];
                maxind = &a[i][j];
            }
            if (a[i][j] < min){
                min = a[i][j];
                minind = &a[i][j];
            }
        }
        cout << "Min and adress " << min << " and " << minind << endl;
        cout << "Max and adress " << max << " and " << maxind << endl;

        cout << endl;

        int k = *minind;
        *minind = *maxind;
        *maxind = k;

        min = 10;
        max = 0;
    }

    print(a, n, m);

    for (int i = 0; i < n; i++){
        delete[] a[i];
    }
    delete[] a;
    return 0;
}