Top.Mail.Ru
Ответы

Создать простую матрицу в С++

Дана матрица 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; 
}