Advertisement
kirya_shkolnik

Сортировка строк матрицы C++

Sep 7th, 2022
943
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.08 KB | None | 0 0
  1.  
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6.  
  7.  
  8. int main()
  9. {
  10.     int n,m;
  11.     cout << "\nВведите размеры матрицы через прoбел: ";
  12.     cin >> n >> m;
  13.    
  14.     int matrix[n][m];
  15.    
  16.    cout << "\nДана матрица размером "<< n << "x" << m <<":\n";
  17.    for (int i = 0; i <n; ++i)
  18.    {
  19.        for (int j = 0; j < m; ++j)
  20.        {
  21.           matrix[i][j] = rand()%9+1;
  22.           cout << matrix[i][j] << " ";
  23.        }
  24.            
  25.        cout << "\n";
  26.     }
  27.     cout << "\n\nНеобходимо упорядочить строки матрицы \nВыберите принцип упорядочивания:" <<endl;
  28.     cout << "1. По неубыванию значения первых элементов строк" <<endl;
  29.     cout << "2. По невозрастанию сумм элементов строк"<<endl;
  30.     cout << "3. По неубыванию значений наименьших элементов строк"<<endl;
  31.     cout << "4. По невозрастанию значений наибольших элементов строк"<<endl;
  32.     int type = 1;
  33.     cin >> type;
  34.     if(type < 1 or type > 4) type = 1;
  35.    
  36.     int temp = 0;
  37.     for( int k = 0; k < n; k++ )
  38.     {
  39.         for ( int i = 0; i < ( n - 1 ); i++ )
  40.         {
  41.             int sum1 = 0, sum2 = 0, min1 = 10000, min2 = 10000, max1 = -10000, max2 = -10000;
  42.             switch(type){
  43.                 case 2:
  44.                     for( int j = 0 ; j < m; j++ )
  45.                     {
  46.                         sum1+= matrix[ i ][ j ];
  47.                         sum2+= matrix[ i+1 ][ j ];
  48.                     }
  49.                     if( sum1 < sum2 )
  50.                     {
  51.                         for( int j = 0 ; j < m; j++ )
  52.                         {
  53.                             temp = matrix[ i ][ j ];
  54.                             matrix[ i ][ j ] = matrix[ i + 1 ][ j ];
  55.                             matrix[ i + 1 ][ j ] = temp;
  56.                         }
  57.                     }
  58.                     break;
  59.                 case 3:
  60.                     for( int j = 0 ; j < m; j++ )
  61.                     {
  62.                         if(matrix[ i ][ j ] < min1) min1 = matrix[ i ][ j ];
  63.                         if(matrix[ i + 1 ][ j ] < min2) min2 = matrix[ i + 1 ][ j ];
  64.                     }
  65.                     if( min1 > min2 )
  66.                     {
  67.                         for( int j = 0 ; j < m; j++ )
  68.                         {
  69.                             temp = matrix[ i ][ j ];
  70.                             matrix[ i ][ j ] = matrix[ i + 1 ][ j ];
  71.                             matrix[ i + 1 ][ j ] = temp;
  72.                         }
  73.                     }
  74.                     break;
  75.                 case 4:
  76.                     for( int j = 0 ; j < m; j++ )
  77.                     {
  78.                         if(matrix[ i ][ j ] > max1) max1 = matrix[ i ][ j ];
  79.                         if(matrix[ i + 1 ][ j ] > max2) max2 = matrix[ i + 1 ][ j ];
  80.                     }
  81.                     if( max1 < max2 )
  82.                     {
  83.                         for( int j = 0 ; j < m; j++ )
  84.                         {
  85.                             temp = matrix[ i ][ j ];
  86.                             matrix[ i ][ j ] = matrix[ i + 1 ][ j ];
  87.                             matrix[ i + 1 ][ j ] = temp;
  88.                         }
  89.                     }
  90.                     break;
  91.                 default:
  92.                     if( matrix[ i ][ 0 ] > matrix[ i + 1 ][ 0 ] )
  93.                     {
  94.                         for( int j = 0 ; j < m; j++ )
  95.                         {
  96.                             temp = matrix[ i ][ j ];
  97.                             matrix[ i ][ j ] = matrix[ i + 1 ][ j ];
  98.                             matrix[ i + 1 ][ j ] = temp;
  99.                         }
  100.                     }
  101.             }
  102.              
  103.         }
  104.     }
  105.     cout << "\n\nРезультат:\n";
  106.     for (int i = 0; i <n; ++i)
  107.     {
  108.        for (int j = 0; j < m; ++j)
  109.        {
  110.           cout << matrix[i][j] << " ";
  111.        }
  112.            
  113.        cout << "\n";
  114.     }
  115. }
  116.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement