Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- void fMaxMin(std::vector<int*> vec, int* max, int**& min, int** cMax, int& cMin)
- {
- int*& val_max = max; // referencja (przezwisko) na wskaźnik
- int* val_min = *min; // pobranie wartości, która znajduje się pod adresem przechowywanym przez podwójny wskaźnik min
- int* val_cMax = *cMax; // analogicznie j.w.
- int* val_cMin = &cMin; // pobranie do wskaźnika adresu, pod którym znajduje się cMin
- *val_max = *vec[0];
- *val_min = *vec[0];
- *val_cMax = 1;
- *val_cMin = 1;
- unsigned int size = vec.size();
- for (unsigned int i = 0; i < size; ++i)
- {
- if (*vec[i] > *val_max)
- {
- *val_max = *vec[i];
- *val_cMax = 1;
- }
- else if (*vec[i] == *val_max)
- ++(*val_cMax);
- else if (*vec[i] < *val_min)
- {
- *val_min = *vec[i];
- *val_cMin = 1;
- }
- else if (*vec[i] == *val_min)
- ++(*val_cMin);
- }
- **min = *val_min;
- **cMax = *val_cMax;
- }
- int main()
- {
- auto vec = std::vector<int>{ 1, 2, 1, 42, 2, 2, 42, 1, 1, 2, 1, 42 };
- auto vecP = std::vector<int*>();
- for (auto& item : vec)
- {
- vecP.push_back(&item);
- }
- int max, min, cMax, cMin;
- int* ptr_min = &min;
- int** ptr2_min = &ptr_min;
- int* ptr_cMax = &cMax;
- int** ptr2_cMax = &ptr_cMax;
- fMaxMin(vecP, &max, ptr2_min, ptr2_cMax, cMin);
- std::cout << "max: " << max << std::endl;
- std::cout << "min: " << min << std::endl;
- std::cout << "cMax: " << cMax << std::endl;
- std::cout << "cMin: " << cMin << std::endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement