Advertisement
STANAANDREY

learning poash templates ex1

Mar 8th, 2025
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.03 KB | None | 0 0
  1. #if defined(_MSC_VER)
  2. #include <__msvc_all_public_headers.hpp>
  3. #elif defined(__GNUC__)
  4. #include <bits/stdc++.h>
  5. #else
  6. #error "Unsupported compiler"
  7. #endif
  8. using namespace std;
  9.  
  10. template<typename T>
  11. T Add(const T& a, const T& b) {
  12.     return a + b;
  13. }
  14.  
  15. template<typename T>
  16. T ArraySum(const T* pArr, size_t arrSize) {
  17.     T sum = T();
  18.     for (int i = 0; i < arrSize; ++i) {
  19.         sum = Add(sum, pArr[i]);
  20.     }
  21.     return sum;
  22. }
  23.  
  24. template<typename T>
  25. T Max(const T* pArr, size_t arrSize) {
  26.     if (arrSize == 0) {
  27.         throw invalid_argument("Array is empty");
  28.     }
  29.     T max = pArr[0];
  30.     for (int i = 1; i < arrSize; ++i) {
  31.         if (pArr[i] > max) {
  32.             max = pArr[i];
  33.         }
  34.     }
  35.     return max;
  36. }
  37.  
  38. int main() {
  39.     int arr[] = { 1, 2, 3, 4, 5 };
  40.     cout << ArraySum(arr, 5) << endl;
  41.     cout << Max(arr, 5) << endl;
  42.  
  43.     string arr2[] = { "abc", "def", "ghi" };
  44.     cout << ArraySum(arr2, 3) << endl;
  45.     cout << Max(arr2, 3) << endl;
  46.  
  47.     double arr3[] = { 1.1, 2.2, 3.3, 4.4, 5.5 };
  48.     cout << ArraySum(arr3, 5) << endl;
  49.     cout << Max(arr3, 5) << endl;
  50.  
  51.     return 0;
  52. }
  53.  
  54.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement