Создать простую матрицу в С++
Дана матрица A[m×n]. Напишите программу, которая находит
максимальный и минимальный элементы в каждом столбце, и меняет их
местами.
По дате
По рейтингу
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
int m,n,**A,min,max,x,y,xmax,xmin,tmp;
srand(time(nullptr)); // чтобы при каждом запуске программы генерировались разные значения
cout << "m = ";
cin >> m;
cout << "n = ";
cin >> n;
// выделяем память
A = new int* [m];
for(x = 0; x < m; x++) A[x] = new int [n];
// генерируем значения матрицы
for(x = 0; x < m; x++)
{
for(y = 0; y < n; y++)
{
A[x][y] = rand() % 31 - 15; // [-15;15]
cout << A[x][y] << "\t"; // и сразу выводим на экран
}
cout << endl;
}
cout << endl;
// находим максимальный и минимальный элементы в столбцах и сразу их меняем
for(y = 0; y < n; y++)
{
max = min = A[0][y];
xmax = xmin = 0;
for(x = 0; x < m; x++)
{
if(A[x][y] > max)
{
max = A[x][y];
xmax = x;
}
if(A[x][y] < min)
{
min = A[x][y];
xmin = x;
}
}
cout << "Максимальный элементв в толбце " << y + 1 << " равен " << max << "." << endl;
cout << "Минимальный элемент в столбце " << y + 1 << " равен " << min << "." << endl << endl;
// замена
tmp = A[xmax][y];
A[xmax][y] = A[xmin][y];
A[xmin][y] = tmp;
}
// вывод на экран изменённой матрицы
for(x = 0; x < m; x++)
{
for(y = 0; y < n; y++) cout << A[x][y] << "\t";
cout << endl;
}
// освобождение памяти
for(x = 0; x < m; x++)
{
if(A[x] == (int*) nullptr) exit(1);
delete [] A[x];
A[x] = (int*) nullptr;
}
if(A == (int**) nullptr) exit(1);
delete [] A;
A = (int**) nullptr;
return 0;
}