Advertisement
al3taibi

Untitled

May 30th, 2022
873
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.50 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. template<typename Type>
  7. int getZeros(Type **array, int N, int M){
  8.     int i, k, zeros = M;
  9.  
  10.     for(k = 0; k < M; k++){
  11.         for(i = 0; i < N; i++){
  12.             if(array[i][k] == 0){
  13.                 zeros--;
  14.                 break;
  15.             }
  16.         }
  17.     }
  18.  
  19.     return zeros;
  20. }
  21.  
  22. template<typename Type>
  23. void characteristics(Type **array, int N, int M) {
  24.     Type characteristics[N][2], sum;
  25.     int i, k;
  26.  
  27.     for(i = 0; i < N; i++){
  28.         sum = 0;
  29.         for(k = 0; k < M; k += 2){
  30.             if(array[i][k] > 0) sum += array[i][k];
  31.         }
  32.         characteristics[i][0] = i;
  33.         characteristics[i][1] = sum;
  34.     }
  35.     for (i = 1; i < N; i++)
  36.         for (k = 0; k < N - i; k++)
  37.             if (characteristics[k][1] < characteristics[k + 1][1])
  38.                 swap(characteristics[k], characteristics[k + 1]);
  39.  
  40.     for(i = 0; i < N; i++) {
  41.         for(k = 0; k < M; k++){
  42.             cout << array[(int) characteristics[i][0]][k];
  43.             if(k != M - 1) cout << " ";
  44.         }
  45.         cout << endl;
  46.     }
  47. }
  48.  
  49. template<typename Type>
  50. void process(Type **array, int N, int M)
  51. {
  52.     int i, k;
  53.  
  54.     for (i = 0; i < N; i++)
  55.     {
  56.         array[i] = new Type[M];
  57.     }
  58.  
  59.     for (i = 0; i < N; i++) {
  60.         for (k = 0; k < M; k++) {
  61.             cin >> array[i][k];
  62.         }
  63.     }
  64.  
  65.     cout << getZeros(array, N, M) << endl;
  66.     characteristics(array, N, M);
  67. }
  68.  
  69. int main() {
  70.     int N, M, i, k;
  71.  
  72.     cin >> N;
  73.     cin >> M;
  74.  
  75.     auto **array = new int* [M];
  76.     auto **arrayDouble = new double* [M];
  77.     auto **arrayFloat = new float* [M];
  78.  
  79.     process(array, N, M);
  80.     process(arrayDouble, N, M);
  81.     process(arrayFloat, N, M);
  82.  
  83.     return 0;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement