Advertisement
MeehoweCK

Untitled

May 25th, 2023
660
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.48 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. void fMaxMin(std::vector<int*> vec, int* max, int**& min, int** cMax, int& cMin)
  5. {
  6.     int*& val_max = max;        // referencja (przezwisko) na wskaźnik
  7.     int* val_min = *min;        // pobranie wartości, która znajduje się pod adresem przechowywanym przez podwójny wskaźnik min
  8.     int* val_cMax = *cMax;      // analogicznie j.w.
  9.     int* val_cMin = &cMin;      // pobranie do wskaźnika adresu, pod którym znajduje się cMin
  10.  
  11.     *val_max = *vec[0];
  12.     *val_min = *vec[0];
  13.     *val_cMax = 1;
  14.     *val_cMin = 1;
  15.  
  16.     unsigned int size = vec.size();
  17.     for (unsigned int i = 0; i < size; ++i)
  18.     {
  19.         if (*vec[i] > *val_max)
  20.         {
  21.             *val_max = *vec[i];
  22.             *val_cMax = 1;
  23.         }
  24.         else if (*vec[i] == *val_max)
  25.             ++(*val_cMax);
  26.         else if (*vec[i] < *val_min)
  27.         {
  28.             *val_min = *vec[i];
  29.             *val_cMin = 1;
  30.         }
  31.         else if (*vec[i] == *val_min)
  32.             ++(*val_cMin);
  33.     }
  34.  
  35.     **min = *val_min;
  36.     **cMax = *val_cMax;
  37. }
  38.  
  39. int main()
  40. {
  41.     auto vec = std::vector<int>{ 1, 2, 1, 42, 2, 2, 42, 1, 1, 2, 1, 42 };
  42.     auto vecP = std::vector<int*>();
  43.  
  44.     for (auto& item : vec)
  45.     {
  46.         vecP.push_back(&item);
  47.     }
  48.  
  49.     int max, min, cMax, cMin;
  50.  
  51.     int* ptr_min = &min;
  52.     int** ptr2_min = &ptr_min;
  53.  
  54.     int* ptr_cMax = &cMax;
  55.     int** ptr2_cMax = &ptr_cMax;
  56.  
  57.     fMaxMin(vecP, &max, ptr2_min, ptr2_cMax, cMin);
  58.  
  59.     std::cout << "max: " << max << std::endl;
  60.     std::cout << "min: " << min << std::endl;
  61.     std::cout << "cMax: " << cMax << std::endl;
  62.     std::cout << "cMin: " << cMin << std::endl;
  63.  
  64.     return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement