Untitled
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; }