Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- template<typename T>
- T max(T* arr, int arrSize)
- {
- T maxEl{ arr[0] };
- for (int i{ 0 }; i < arrSize; ++i)
- {
- if (maxEl < arr[i]) { maxEl = arr[i]; }
- }
- return maxEl;
- }
- template<typename T>
- T min(T* arr, int arrSize)
- {
- T minEl{ arr[0] };
- for (int i{ 0 }; i < arrSize; ++i)
- {
- if (minEl > arr[i]) { minEl = arr[i]; }
- }
- return minEl;
- }
- template<typename T>
- T avg(T* arr, int arrSize)
- {
- T sum{ 0 };
- for (int i{ 0 }; i < arrSize; sum += arr[i++]);
- return sum/arrSize;
- }
- template<typename T>
- T action(int* arrA, int arrASize, int* arrB, int arrBSize, T(*func)(T* arr, int arrSize))
- {
- const int resArrSize{ 2 };
- T resArr[resArrSize]{};
- resArr[0] = func(arrA, arrASize);
- resArr[1] = func(arrB, arrBSize);
- return func(resArr, resArrSize);
- }
- int main()
- {
- const int arrASize{ 5 };
- const int arrBSize{ 5 };
- int arrA[arrASize]{ 1,5,2,3,9 };
- int arrB[arrBSize]{ 6,8,1,0,7 };
- int act{ 0 };
- bool correct{ true };
- int(*actionArr[3])(int*, int) {max, min, avg};
- do
- {
- std::cout << "Select action\n1 - max\n2 - min\n3 - avg\n";
- std::cin >> act;
- if (!(correct = (act >= 1 and act <= 3)))
- {
- std::cout << "Invalid action! Try again!\n";
- }
- } while (!correct);
- std::cout << action(arrA, arrASize, arrB, arrBSize, actionArr[act-1]) << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement