Vanilla_Fury

yp_laba_1_2

Sep 8th, 2021
301
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.99 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3.  
  4. int* inputOfIntFromConsole(short MIN_N, short MAX_N)
  5. {
  6.     int* n = new int;
  7.     bool isIncorrect = true;
  8.  
  9.     do {
  10.         std::cin >> *n;
  11.         if (*n > MIN_N - 1 and *n < MAX_N + 1)
  12.         {
  13.             isIncorrect = false;
  14.         } else
  15.         {
  16.             std::cout << "\tПожалуйста, введите целое число от " << MIN_N << " до " << MAX_N << ": ";
  17.         }
  18.     } while (isIncorrect);
  19.     return n;
  20. }
  21.  
  22. void inputOfArrFromConsole(int arr[5][5])
  23. {
  24.     bool isIncorrect;
  25.     const int MIN_ELEM = -1000000;
  26.     const int MAX_ELEM = 1000000;
  27.     int number;
  28.     std::string input;
  29.    
  30.     for (int i = 0; i < 5; i++)
  31.     {
  32.         for (int j = 0; j < 5; j++)
  33.         {
  34.             std::cout << "\tЭлемент [" << i + 1 << "][" << j + 1 << "]: ";
  35.             do
  36.             {
  37.                 isIncorrect = false;
  38.                
  39.                 getline(std::cin, input);
  40.                 try {
  41.                     number = stoi(input);
  42.                 } catch (...) {
  43.                     isIncorrect = true;
  44.                 }
  45.                 if (isIncorrect || number < MIN_ELEM || number > MAX_ELEM)
  46.                 {
  47.                     isIncorrect = true;
  48.                     std::cout << "\t\tПожалуйста, введите целое число от " << MIN_ELEM << " до " << MAX_ELEM << ": ";
  49.                 }
  50.             } while (isIncorrect);
  51.             arr[i][j] = number;
  52.         }
  53.     }
  54. }
  55.  
  56. void outputOfArr(int arr[5][5])
  57. {
  58.     std::cout.setf(std::ios::left);
  59.    
  60.     for (int i = 0; i < 5; i++)
  61.     {
  62.         for (int j = 0; j < 5; j++)
  63.         {
  64.             std::cout << std::setw(8) << arr[i][j];
  65.         }
  66.         std::cout << "\n";
  67.     }
  68. }
  69.  
  70. void changeArr(int arr[5][5])
  71. {
  72.     int prevSum = 0;
  73.     int sum;
  74.    
  75.    
  76.     for (int k = 0; k < 5; k++)
  77.     {
  78.         for (int j = 0; j < 5 - k; j++)
  79.         {
  80.             sum = 0;
  81.             for (int i = 0; i < 5; i++)
  82.             {
  83.                 sum += arr[i][j];
  84.             }
  85.            
  86.             if (j > 0 and sum > prevSum)
  87.             {
  88.                 for (int ii = 0; ii < 5; ii++) {
  89.                     int temp = arr[ii][j];
  90.                     arr[ii][j] = arr[ii][j - 1];
  91.                     arr[ii][j - 1] = temp;
  92.                 }
  93.             } else
  94.             {
  95.             prevSum = sum;
  96.             }
  97.         }
  98.     }
  99. }
  100.  
  101. int main(int argc, const char * argv[]) {
  102.     std::cout << "\nДанная программа принимает массив 5 на 5 и сортирует столбцы в порядке убывания сумм элементов.\n";
  103.    
  104.     int arr[5][5];
  105.    
  106.     std::cout << "\nВведите массив:\n";
  107.     inputOfArrFromConsole(arr);
  108.     std::cout << "\nМассив:\n";
  109.     outputOfArr(arr);
  110.    
  111.     changeArr(arr);
  112.    
  113.     std::cout << "\nПеределанный массив:\n";
  114.     outputOfArr(arr);
  115.    
  116.     return 0;
  117. }
  118.  
Advertisement
Add Comment
Please, Sign In to add comment