4DM3M

41

Mar 24th, 2021
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.64 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. template <typename T>
  5. void Sort(T* arr, const int& SIZE)
  6. {
  7.     T* new_arr = new T[SIZE / 2+2];
  8.     int k = 0;
  9.         for (int i = 0; i < SIZE; i += 2)
  10.             new_arr[k++] = arr[i];
  11.  
  12.         for (int i = 0; i < k-1; i++)
  13.         {
  14.             T min = new_arr[i];
  15.             int nom = i;
  16.  
  17.             for (int j=i+1; j<k; j++)
  18.                 if (new_arr[j] < min)
  19.                 {
  20.                     min = new_arr[j];
  21.                     nom = j;
  22.                 }
  23.             swap(new_arr[i], new_arr[nom]);
  24.         }
  25.  
  26.         int sm=0;
  27.         for (int i = 0; i < SIZE; i+=2)
  28.         {
  29.             if (sm < k)
  30.                 arr[i] = new_arr[sm++];
  31.             else
  32.                 break;
  33.         }
  34.  
  35.         delete[] new_arr;
  36. }
  37. template <typename T2>
  38. T2 lessZero(T2* arr, const int SIZE)
  39. {
  40.     int lZ = 1;
  41.     for (int i = 0; i < SIZE; i++)
  42.     {
  43.         if (arr[i] < 0)
  44.         {
  45.             lZ *= arr[i];
  46.         }
  47.     }
  48.  
  49.     return lZ;
  50. }
  51.  
  52. template <typename T3>
  53. T3 Sum(T3* arr, const int SIZE)
  54. {
  55.     T3 max = arr[0], sum=0;
  56.     int nom=0;
  57.     for (int i = 0; i < SIZE; i++)
  58.     {
  59.         if (arr[i] > max)
  60.         {
  61.             max = arr[i];
  62.             nom = i;
  63.         }
  64.     }
  65.  
  66.     for (int i = 0; i < nom; i++)
  67.     {
  68.         sum += arr[i];
  69.     }
  70.  
  71.     return sum;
  72. }
  73.  
  74.  
  75.  
  76.  
  77. void main()
  78. {
  79.     setlocale(LC_ALL, "");
  80.     int size = NULL;
  81.     cout << "Введите количество элементов массива: ";
  82.     cin >> size;
  83.  
  84.     cout << "Введите массив:\n";
  85.     float *arr = new float[size];
  86.     for (int i = 0; i < size; i++)
  87.     {
  88.         cin >> arr[i];
  89.     }
  90.  
  91.     Sort(arr, size);
  92.  
  93.     for (int i = 0; i < size; i++)
  94.         cout << arr[i] << " ";
  95.     cout << endl;
  96.  
  97.     cout << "произведение отрицаиельных " << lessZero(arr, size) << endl;
  98.    
  99.     cout << "сумма до максимального " << Sum(arr, size) << endl;
  100.    
  101.     delete[] arr;
  102. }
Advertisement
Add Comment
Please, Sign In to add comment