Advertisement
al3taibi

Untitled

May 16th, 2022
604
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.19 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6.  
  7.  
  8. template<typename Type>
  9. void sums(Type **array, int N, int M) {
  10.     int i, k, j;
  11.     vector<vector<Type>> sums;
  12.  
  13.     for (k = 0; k < M; k++) {
  14.  
  15.         bool add = false;
  16.         Type sum = 0;
  17.  
  18.         for (i = 0; i < N; i++) {
  19.  
  20.             if (array[i][k] < 0) {
  21.  
  22.                 add = true;
  23.  
  24.                 for (j = 0; j < N; j++) {
  25.                     sum += array[j][k];
  26.                 }
  27.  
  28.                 break;
  29.             }
  30.         }
  31.  
  32.         if(add)
  33.         {
  34.             cout << k + 1 << ' ' << sum << endl;
  35.         }
  36.     }
  37.  
  38.     for(i = 0; i < 2; i ++)
  39.     {
  40.         for(j = 0; j < sums.size(); j++)
  41.         {
  42.             cout << sums[j][i];
  43.  
  44.             if(j != sums.size() - 1) cout << ' ';
  45.         }
  46.         cout << endl;
  47.     }
  48. }
  49.  
  50. template<typename Type>
  51. void firstN(Type **array, int N, int M) {
  52.     int i, k;
  53.     Type characteristics[M][2], sum;
  54.  
  55.     for (k = 0; k < M; k++) {
  56.         sum = 0;
  57.         for (i = 0; i < N; i += 2) {
  58.             if (array[i][k] < 0) sum += abs(array[i][k]);
  59.         }
  60.         characteristics[k][0] = k;
  61.         characteristics[k][1] = sum;
  62.     }
  63.  
  64.     for (i = 1; i < M; i++)
  65.         for (k = 0; k < M - i; k++)
  66.             if (characteristics[k][1] > characteristics[k + 1][1])
  67.                 swap(characteristics[k], characteristics[k + 1]);
  68.  
  69.     for (i = 0; i < M; i++)
  70.         cout << characteristics[i][0] << '-' << characteristics[i][1] << endl;
  71.  
  72.     auto **result = new Type*[N];
  73.     for (i = 0; i < N; i++)
  74.     {
  75.         result[i] = new Type[M];
  76.     }
  77.  
  78.  
  79.     for (i = 0; i < N; i++) {
  80.         for (k = 0; k < M; k++) {
  81.             result[i][k] = array[i][(int)characteristics[k][0]];
  82.             cout << result[i][k];
  83.             if (k != M - 1) cout << ' ';
  84.         }
  85.         cout << endl;
  86.     }
  87.  
  88.     sums(result, N, M);
  89. }
  90.  
  91. template<typename Type>
  92. void process(Type **array, int N, int M)
  93. {
  94.     int i, k;
  95.  
  96.     for (i = 0; i < N; i++)
  97.     {
  98.         array[i] = new Type[M];
  99.     }
  100.  
  101. //  float j[3][4] = {
  102. //          {0.1234, 0, -7.602, -8.54},
  103. //          {1, 4.00005, 1.99, -2},
  104. //          {6.02207, 1, -1, 0}
  105. //  };
  106.  
  107.     for(i = 0; i < N; i++){
  108.         for(k = 0; k < M; k++){
  109.             //array[i][k] = j[i][k];
  110.             cin >> array[i][k];
  111.         }
  112.     }
  113.  
  114.     firstN(array, N, M);
  115. }
  116.  
  117. int main() {
  118.     int N = 3, M = 4;
  119.     cin >> N;
  120.     cin >> M;
  121.  
  122.     auto **array = new int* [N];
  123.     auto **arrayDouble = new double* [N];
  124.     auto **arrayFloat = new float* [N];
  125.  
  126.     process(array, N, M);
  127.     process(arrayDouble, N, M);
  128.     process(arrayFloat, N, M);
  129. }
  130.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement