Advertisement
MeehoweCK

Untitled

May 25th, 2023
553
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.70 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;       // *min - adres, który jest wartością podwójnego wskaźnika min, **min - wartość, która znajduje się pod tym adresem,
  36.                             // *val_min - wartość, która znajduje się pod adresem przechowywanym przez wskaźnik val_min
  37.     **cMax = *val_cMax;
  38. }
  39.  
  40. int main()
  41. {
  42.     auto vec = std::vector<int>{ 1, 2, 1, 42, 2, 2, 42, 1, 1, 2, 1, 42 };
  43.     auto vecP = std::vector<int*>();
  44.  
  45.     for (auto& item : vec)
  46.     {
  47.         vecP.push_back(&item);
  48.     }
  49.  
  50.     int max, min, cMax, cMin;
  51.  
  52.     int* ptr_min = &min;
  53.     int** ptr2_min = &ptr_min;
  54.  
  55.     int* ptr_cMax = &cMax;
  56.     int** ptr2_cMax = &ptr_cMax;
  57.  
  58.     fMaxMin(vecP, &max, ptr2_min, ptr2_cMax, cMin);
  59.  
  60.     std::cout << "max: " << max << std::endl;
  61.     std::cout << "min: " << min << std::endl;
  62.     std::cout << "cMax: " << cMax << std::endl;
  63.     std::cout << "cMin: " << cMin << std::endl;
  64.  
  65.     return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement