Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- int* createArr(int size)
- {
- return new int[size];
- }
- void deleteArr(int* ptr)
- {
- delete[] ptr;
- }
- void printArr(const int* begin, const int* const end)
- {
- while (begin != end)
- {
- std::cout << *begin++ << ' ';
- }
- std::cout << '\n';
- }
- void fillArr(int* begin, const int* const end, int start, int stop)
- {
- while (begin != end)
- {
- *begin++ = (rand() % (stop - start) + start);
- }
- }
- void fillArr(int* begin, const int* const end, int val, bool inc = false)
- {
- while (begin != end)
- {
- *begin++ = val;
- val += inc;
- }
- }
- void addElementToArr(int*& arr, int& size, int element)
- {
- int* newArr{ new int[size + 1]{} };
- for (int i{ 0 }; i < size; ++i)
- {
- *(newArr + i) = *(arr + i);
- }
- //delete[] arr;
- arr = newArr;
- ++size;
- *(arr + size - 1) = element;
- }
- int* filter(int* begin, int* const end, bool(*pred)(int))
- {
- int* insertPos{ begin };
- for (; insertPos != end and pred(*insertPos); ++insertPos);
- if (insertPos == end) { std::cout << "Early finish!" << '\n'; return end; }
- begin = insertPos + 1;
- while (begin != end)
- {
- if (pred(*begin))
- {
- *insertPos++ = *begin;
- }
- ++begin;
- }
- return insertPos;
- }
- bool allElements(int val) { return true; }
- bool noElements(int val) { return false; }
- bool evenElements(int val) { return val % 2 == 0; }
- bool oddElements(int val) { return val % 2 != 0; }
- bool greater40(int val) { return val > 40; }
- int main()
- {
- int arr1Size{ 20 };
- auto arr1{ createArr(arr1Size) };
- fillArr(arr1, arr1 + arr1Size, 10, 50);
- printArr(arr1, arr1 + arr1Size);
- auto filtered{ filter(arr1, arr1 + arr1Size, evenElements) };
- printArr(arr1, filtered);
- auto filtered1{ filter(arr1, filtered, greater40) };
- printArr(arr1, filtered1);
- //auto smallArr{ createArr(filtered - arr1) };
- deleteArr(arr1);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement