Advertisement
Nasysysy

Untitled

Nov 28th, 2019
628
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.06 KB | None | 0 0
  1. /*Коробейников
  2. Лаба 10
  3. Вариант-45.
  4. Дана целочисленная матрица {Aij}i=1...n;j=1..n , n<=100. Если суммы цифр минимального и максимального элементов матрицы отличаются не более, чем на 3, упорядочить столбцы матрицы по неубыванию произведения элементов. Использовать процедуры и функции!
  5. */
  6.  
  7. #include <iostream>
  8. #include <cmath>
  9. using namespace std;
  10.  
  11. int n;
  12. int mas[100][100];
  13. int mas_sum[100][2];
  14.  
  15. void swap(int &x, int &y)
  16. {
  17.     int tmp = x;
  18.     x = y;
  19.     y = tmp;
  20. }
  21.  
  22. void sort(){
  23.     for(int i = 0; i < n - 1; i++){
  24.         for(int j = i + 1; j < n; j++){
  25.             if(mas_sum[i][0] > mas_sum[j][0]) {
  26.                 swap(mas_sum[i][0], mas_sum[j][0]);
  27.                 swap(mas_sum[i][1], mas_sum[j][1]);
  28.             }
  29.         }
  30.     }
  31. }
  32.  
  33. int sum_of_numbers(int a){
  34.     int sum = 0;
  35.     while(a > 9) {
  36.         sum += a % 10;
  37.         a /= 10;
  38.     }
  39.     sum += a;
  40.     return sum;
  41. }
  42. int main(){
  43.  
  44.     cin >> n;
  45.     int min_element = INT_MAX;
  46.     int max_element = INT_MIN;
  47.     for(int i = 0; i < n; i++){
  48.         for(int j = 0; j < n; j++){
  49.             cin >> mas[i][j];
  50.             min_element = min(min_element, mas[i][j]);
  51.             max_element = max(max_element, mas[i][j]);
  52.         }
  53.     }
  54.     if(abs(sum_of_numbers(max_element) - sum_of_numbers(min_element)) > 3)
  55.         return 0;
  56.     for(int i = 0; i < n; i++){
  57.         int sum_now = 0;
  58.         for(int j = 0; j < n; j++){
  59.             sum_now += mas[j][i];
  60.         }
  61.         mas_sum[i][0] = sum_now;
  62.         mas_sum[i][1] = i;
  63.     }
  64.     sort();
  65.  
  66.     int mas1[100][100];
  67.     for(int i = 0; i < n; i++){
  68.         for(int j = 0; j < n; j++){
  69.             mas1[j][i] = mas[j][mas_sum[i][1]];
  70.         }
  71.     }
  72.     for(int i = 0; i < n; i++){
  73.         for(int j = 0; j < n; j++){
  74.             cout << mas1[i][j] << " ";
  75.         }
  76.         cout << endl;
  77.     }
  78.     return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement