Tucancitto

AF - Pb4 din Curs 10 - coş

Dec 14th, 2020 (edited)
768
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.73 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. using namespace std;
  4.  
  5. void citire(int vect[], int& n, int& x)
  6. {
  7.     cout << "Introduceti N: ";
  8.     cin >> n;
  9.  
  10.     cout << "Introduceti X: ";
  11.     cin >> x;
  12.  
  13.     cout << "Introduceti preturile: ";
  14.     for (int i = 0; i < n; i++)
  15.         cin >> vect[i];
  16. }
  17.  
  18. //se vor sterge X obiecte cu pret maxim care se afla inaintea lui a[i]=0
  19. void modificareCos(int vect[], int n, int x)
  20. {
  21.     for (int i = 0; i < n; i++)
  22.         if (vect[i] == 0)
  23.         {
  24.             sort(vect, vect + i + 1);
  25.  
  26.             int indice = i - x + 1;
  27.  
  28.             if (indice < 0)
  29.                 indice = 0;
  30.  
  31.             for (int j = indice; j <= i; j++)
  32.                 vect[j] = 0;
  33.         }
  34. }
  35.  
  36. //se vor sterge cate X obiecte cu pret maxim din tot cosul la intalnirea lui a[i]=0
  37. void modificareCos2(int vect[], int n, int x)
  38. {
  39.     sort(vect, vect + n);
  40.  
  41.     int val0 = 0, indice;
  42.  
  43.     for (int i = 0; i < n; i++)
  44.         if (vect[i] == 0)
  45.             val0++;
  46.         else
  47.             break;
  48.     sort(vect, vect + n, greater<int>());
  49.  
  50.     indice = val0 * x;
  51.     if (indice > n)
  52.         indice = n;
  53.  
  54.     for (int i = 0; i < indice; i++)
  55.         vect[i] = 0;
  56. }
  57.  
  58. /*void afisare(int vect[], int n)
  59. {
  60.     for (int i = 0; i < n; i++)
  61.         cout << vect[i] << ' ';
  62.     cout << "\n";
  63. }*/
  64.  
  65. enum
  66. {
  67.     modificare1, modificare2
  68. };
  69.  
  70. int pretFinal(int vect[], int n, int x, int criteriu)
  71. {
  72.     int aux[100] = { 0 }, pret = 0;
  73.  
  74.     for (int i = 0; i < n; i++)
  75.         aux[i] = vect[i];
  76.  
  77.     if (criteriu == modificare1)
  78.         modificareCos(aux, n, x);
  79.  
  80.     if (criteriu == modificare2)
  81.         modificareCos2(aux, n, x);
  82.  
  83.     //afisare(aux, n);
  84.  
  85.     for (int i = 0; i < n; i++)
  86.         pret += aux[i];
  87.  
  88.     return pret;
  89. }
  90.  
  91. int main()
  92. {
  93.     int n, x, vect[100] = { 0 };
  94.     citire(vect, n, x);
  95.  
  96.     cout << pretFinal(vect, n, x, modificare1) << ' ';
  97.     cout << pretFinal(vect, n, x, modificare2);
  98.     return 0;
  99. }
  100.  
Add Comment
Please, Sign In to add comment