Advertisement
avr39ripe

cppFPtrAction

May 19th, 2021
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.35 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. template<typename T>
  4. T max(T* arr, int arrSize)
  5. {
  6.     T maxEl{ arr[0] };
  7.     for (int i{ 0 }; i < arrSize; ++i)
  8.     {
  9.         if (maxEl < arr[i]) { maxEl = arr[i]; }
  10.     }
  11.     return maxEl;
  12. }
  13.  
  14. template<typename T>
  15. T min(T* arr, int arrSize)
  16. {
  17.     T minEl{ arr[0] };
  18.     for (int i{ 0 }; i < arrSize; ++i)
  19.     {
  20.         if (minEl > arr[i]) { minEl = arr[i]; }
  21.     }
  22.     return minEl;
  23. }
  24.  
  25. template<typename T>
  26. T avg(T* arr, int arrSize)
  27. {
  28.     T sum{ 0 };
  29.     for (int i{ 0 }; i < arrSize; sum += arr[i++]);
  30.    
  31.     return sum/arrSize;
  32. }
  33.  
  34. template<typename T>
  35. T action(int* arrA, int arrASize, int* arrB, int arrBSize, T(*func)(T* arr, int arrSize))
  36. {
  37.     const int resArrSize{ 2 };
  38.     T resArr[resArrSize]{};
  39.  
  40.     resArr[0] = func(arrA, arrASize);
  41.     resArr[1] = func(arrB, arrBSize);
  42.  
  43.     return func(resArr, resArrSize);
  44. }
  45.  
  46. int main()
  47. {
  48.     const int arrASize{ 5 };
  49.     const int arrBSize{ 5 };
  50.  
  51.     int arrA[arrASize]{ 1,5,2,3,9 };
  52.     int arrB[arrBSize]{ 6,8,1,0,7 };
  53.  
  54.     int act{ 0 };
  55.     bool correct{ true };
  56.  
  57.     int(*actionArr[3])(int*, int) {max, min, avg};
  58.  
  59.     do
  60.     {
  61.         std::cout << "Select action\n1 - max\n2 - min\n3 - avg\n";
  62.         std::cin >> act;
  63.  
  64.         if (!(correct = (act >= 1 and act <= 3)))
  65.         {
  66.             std::cout << "Invalid action! Try again!\n";
  67.         }
  68.  
  69.     } while (!correct);
  70.    
  71.     std::cout << action(arrA, arrASize, arrB, arrBSize, actionArr[act-1]) << '\n';
  72.  
  73.     return 0;
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement