Advertisement
avr39ripe

sbu21TemplateAutoDeclType

Jul 18th, 2020
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.52 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. void testFun()
  4. {
  5.     std::cout << "TestFun is here!!!\n";
  6. }
  7.  
  8. void print()
  9. {
  10.     testFun();
  11.     std::cout << "Print function test!\n";
  12.     return;
  13.     testFun();
  14. }
  15.  
  16. int random(int start, int end, bool withEnd = false)
  17. {
  18.     //int end{ 0 };
  19.     //std::cout << "Enter upper limit\n";
  20.     //std::cin >> end;
  21.     //std::cout << (rand() % 10 + 0.125) << '\n';
  22.  
  23.     return (rand() % ((end - start) + withEnd) + start);
  24. }
  25.  
  26. void swap(int a, int b)
  27. {
  28.     std::cout << "SWAP: a = " << a << ' ' << " b = " << b << '\n';
  29.     int tmp{ a };
  30.     a = b;
  31.     b = tmp;
  32.     std::cout << "SWAP: a = " << a << ' ' << " b = " << b << '\n';
  33. }
  34.  
  35. void printArr(int arr[], int arrSize)
  36. {
  37.     for (int i{ 0 }; i < arrSize; ++i)
  38.     {
  39.         std::cout << arr[i] << ' ';
  40.     }
  41.     std::cout << '\n';
  42. }
  43.  
  44. void printArr(float arr[], int arrSize)
  45. {
  46.     for (int i{ 0 }; i < arrSize; ++i)
  47.     {
  48.         std::cout << arr[i] << ' ';
  49.     }
  50.     std::cout << '\n';
  51. }
  52.  
  53. void printArr(char arr[], int arrSize)
  54. {
  55.     for (int i{ 0 }; i < arrSize; ++i)
  56.     {
  57.         std::cout << arr[i] << ' ';
  58.     }
  59.     std::cout << '\n';
  60. }
  61. void print2DArr(int arr[][4], int arrSizeY, int arrSizeX)
  62. {
  63.     for (int y{ 0 }; y < arrSizeY; ++y)
  64.     {
  65.         for (int x{ 0 }; x < arrSizeX; ++x)
  66.         {
  67.             std::cout << arr[y][x] << ' ';
  68.         }
  69.         std::cout << '\n';
  70.     }
  71.     std::cout << '\n';
  72. }
  73.  
  74. int global{ 55 };
  75.  
  76. //int max(int a, int b) { return a > b ? a : b; };
  77. //int max(int a, int b, int c) { return max(a, max(b, c)); };
  78. //int max(int a, int b, int c, int d) { return max(max(a, b), max(c, d)); }
  79. //
  80. //int max(int arr[], int arrSize)
  81. //{
  82. //    int maxEl{ arr[0] };
  83. //    for (int i{ 0 }; i < arrSize; ++i)
  84. //    {
  85. //        //maxEl = maxEl < arr[i] ? arr[i] : maxEl;
  86. //        maxEl = max(maxEl, arr[i]);
  87. //    }
  88. //    return maxEl;
  89. //}
  90. //int max(int arr[][5], int arrSizeY, int arrSizeX)
  91. //{
  92. //    int maxEl{ arr[0][0] };
  93. //
  94. //    for (int y{ 0 }; y < arrSizeY; ++y)
  95. //    {
  96. //        maxEl = max(maxEl, max(arr[y], arrSizeX));
  97. //    }
  98. //    return maxEl;
  99. //}
  100. //
  101. //double max(double a, double b) { return a > b ? a : b; };
  102. //double max(double a, double b, double c) { return max(a, max(b, c)); };
  103. //double max(double a, double b, double c, double d) { return max(max(a, b), max(c, d)); }
  104. //
  105. //char max(char a, char b) { return a > b ? a : b; };
  106. //char max(char a, char b, char c) { return max(a, max(b, c)); };
  107. //char max(char a, char b, char c, char d) { return max(max(a, b), max(c, d)); }
  108. //
  109. //float max(float a, float b) { return a > b ? a : b; };
  110. //float max(float a, float b, float c) { return max(a, max(b, c)); };
  111. //float max(float a, float b, float c, float d) { return max(max(a, b), max(c, d)); }
  112.  
  113. template <typename T>
  114. T max(T a, T b) { return a > b ? a : b; };
  115. template <typename T>
  116. T max(T a, T b, T c) { return max(a, max(b, c)); };
  117. template <typename T>
  118. T max(T a, T b, T c, T d) { return max(max(a, b), max(c, d)); }
  119.  
  120. template <typename T>
  121. T max(T arr[], int arrSize)
  122. {
  123.     T maxEl{ arr[0] };
  124.     for (int i{ 0 }; i < arrSize; ++i)
  125.     {
  126.         maxEl = max(maxEl, arr[i]);
  127.     }
  128.     return maxEl;
  129. }
  130.  
  131. template <typename T>
  132. T max(int arr[][5], int arrSizeY, int arrSizeX)
  133. {
  134.     T maxEl{ arr[0][0] };
  135.  
  136.     for (int y{ 0 }; y < arrSizeY; ++y)
  137.     {
  138.         maxEl = max(maxEl, max(arr[y], arrSizeX));
  139.     }
  140.     return maxEl;
  141. }
  142.  
  143. int count()
  144. {
  145.     static int cnt{ 0 };
  146.     return ++cnt;
  147. }
  148.  
  149. template <typename T, typename T1>
  150. auto max(T a, T1 b)->decltype(a+b) { return a > b ? a : b; };
  151.  
  152. //int max() {};
  153. //auto max()->int {};
  154.  
  155. int main()
  156. {
  157.     const int arrSize{ 10 };
  158.     int arr[arrSize]{};
  159.     float massiv[10]{ 11.34,2.64,3.22,44.2,5.90,23.1,4.11,8.56,1.6,0.125 };
  160.     char str[5]{ 'a','s','d','f','g' };
  161.     bool mainFlag{ true };
  162.     int begin{};
  163.     int end{};
  164.     const int arrSizeY{ 3 };
  165.     const int arrSizeX{ 4 };
  166.     int arr2D[arrSizeY][arrSizeX]{ {1,2,3,4}, {5,6,7,8}, {9,10,11,12} };
  167.  
  168.     //auto num{ 42 };
  169.     ////int num{42};
  170.  
  171.     //auto temperature{ 36 };
  172.     //temperature = 37.75;
  173.     //std::cout << temperature << '\n';
  174.     //int x{ 0 };
  175.     //float z{ 36.6 };
  176.  
  177.     //decltype((x++ + ++x) / z + 124 * (z += 6)) temp;
  178.  
  179.  
  180.  
  181.  
  182.     //printArr(str, 5);
  183.     //print2DArr(arr2D, arrSizeY, arrSizeX);
  184.  
  185.     // double max(double,double)
  186.     std::cout << max(24.5, (double)25) << '\n';
  187.     // double max(double,double)
  188.     std::cout << max<double>(24.5, 25) << '\n';
  189.  
  190.  
  191.     /*template <typename T, typename T1>
  192.     T max(T a, T1 b) { return a > b ? a : b; };*/
  193.  
  194.     //double max(double , int)
  195.     std::cout << max(24.5, 24) << '\n';
  196.  
  197.     //double max(int,double)
  198.     std::cout << max(24, 24.5) << '\n';
  199.  
  200.     return 0;
  201.     /*for (int i{ 0 }; i < 5; ++i)
  202.     {
  203.         std::cout << count() << ' ';
  204.     }
  205.     std::cout << '\n';
  206.  
  207.     return 0;*/
  208.  
  209.     /*int x{ 10 };
  210.     int y{ 20 };
  211.  
  212.     std::cout << "x = " << x << ' ' << " y = " << y << '\n';
  213.     swap(x, y);
  214.     std::cout << "x = " << x << ' ' << " y = " << y << '\n';*/
  215.  
  216.  
  217.     /*std::cout << "Enter bottom limit\n";
  218.     std::cin >> begin;
  219.     std::cout << "Enter upper limit\n";
  220.     std::cin >> end;*/
  221.  
  222.     for (int i{ 0 }; i < arrSize; ++i)
  223.     {
  224.         //  std::cout << begin <<".." << end << " - " << random(begin,end) << '\n';
  225.         //std::cout << "50..99 - " << random(50,100) << '\n';
  226.         arr[i] = random(20, 100);
  227.         std::cout << arr[i] << ' ';
  228.     }
  229.     std::cout << '\n';
  230.  
  231.     //printArr(massiv, 10);
  232.  
  233.     std::cout << '\n';
  234.  
  235.     return 0;
  236. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement