Untitled
unknown
plain_text
3 years ago
2.4 kB
13
Indexable
#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;
}
Editor is loading...