Advertisement
avr39-ripe

functionPointersLecture

Mar 30th, 2020
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.86 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. //void fun() { std::cout << "fun called!\n"; };
  4. //void fun1() { std::cout << "fun1 called!\n"; };
  5. //
  6. //void funNum(int num) { std::cout << "funNum with num = " << num << " called!\n"; };
  7. //void funNum1(int num) { std::cout << "funNum1 with num = " << num << " called!\n"; };
  8. //void countdown(int num) { while (num >= 0) { std::cout << num-- << '\n'; } std::cout << '\n'; };
  9. //
  10. //
  11. int max(int a, int b) { return a > b ? a : b; };
  12. int min(int a, int b) { return a < b ? a : b; };
  13. //
  14. //double functD(int a, bool b, long t) { return 36.6; };
  15.  
  16. void zero() { std::cout << "Value is zero\n"; };
  17. void above() { std::cout << "Value above zero\n"; };
  18. void beyond() { std::cout << "Value beyond zero\n"; };
  19.  
  20.  
  21. int arrMin(int* arr, int arrSize)
  22. {
  23.     int id{ 0 };
  24.     for (int i{ 0 }; i < arrSize; ++i)
  25.     {
  26.         id = arr[id] < arr[i] ? id : i;
  27.     }
  28.     return arr[id];
  29. }
  30.  
  31. int arrMax(int* arr, int arrSize)
  32. {
  33.     int id{ 0 };
  34.     for (int i{ 0 }; i < arrSize; ++i)
  35.     {
  36.         id = arr[id] > arr[i] ? id : i;
  37.     }
  38.     return arr[id];
  39. }
  40.  
  41.  
  42. int arrSum(int* arr, int arrSize)
  43. {
  44.     int sum{ 0 };
  45.     for (int i{ 0 }; i < arrSize; ++i)
  46.     {
  47.         sum += arr[i];
  48.     }
  49.     return sum;
  50. }
  51.  
  52. bool sortUpArr(int a, int b) { return a < b; };
  53. bool sortDownArr(int a, int b) { return a > b; };
  54. bool sortEvenArr(int a, int b) { return (a % 2 == 0) and (b % 2 !=0); };
  55. bool sortOddArr(int a, int b) { return (a % 2 != 0) and (b % 2 == 0); };
  56.  
  57. void printArrRow(int* arr, int arrSize)
  58. {
  59.     for (int i = 0; i < arrSize; i++) { std::cout << arr[i] << ' '; }; std::cout << '\n';
  60. }
  61.  
  62. void printArrRowTab(int* arr, int arrSize)
  63. {
  64.     for (int i = 0; i < arrSize; i++) { std::cout << arr[i] << '\t'; }; std::cout << '\n';
  65. }
  66.  
  67. void printArrCol(int* arr, int arrSize)
  68. {
  69.     for (int i = 0; i < arrSize; i++) { std::cout << arr[i] << '\n'; }; std::cout << '\n';
  70. }
  71.  
  72. void sortBuble(int* arr, int arrSize, bool(*sortCriteria)(int,int), void(*print)(int*, int)=nullptr)
  73. {
  74.     if (print) { print(arr, arrSize); };
  75.     for (int head{ 0 }; head < arrSize; head++)
  76.     {
  77.         for (int tail{ arrSize - 1 }; tail > head; tail--)
  78.         {
  79.  
  80.             //if ((up and (sortUpArr(arr[tail],arr[tail - 1]))) or (!up and (sortDownArr(arr[tail], arr[tail - 1]))))
  81.             if ( sortCriteria(arr[tail],arr[tail - 1]))
  82.             {
  83.                 int tmp = arr[tail];
  84.                 arr[tail] = arr[tail - 1];
  85.                 arr[tail - 1] = tmp;
  86.             }
  87.         }
  88.  
  89.     }
  90.     if (print) { print(arr, arrSize); };
  91. }
  92.  
  93.  
  94. int main()
  95. {
  96.     const int  arrSize{ 10 };
  97.     int arr[arrSize] = { 6,1,4,2,8,9,11,3,2,1 };
  98.  
  99.     //for (int i = 0; i < arrSize; i++) { std::cout << arr[i] << ' '; };  std::cout << '\n';
  100.     sortBuble(arr, arrSize, sortUpArr, printArrRowTab);
  101.     //for (int i = 0; i < arrSize; i++) { std::cout << arr[i] << ' '; }; std::cout << '\n';
  102.  
  103.     //const int fptrSize{ 3 };
  104.     //int (*fptr[fptrSize])(int*, int) {  arrMax, arrSum, arrMin};
  105.     //
  106.  
  107.     //for (int funNum{ 0 }; funNum < fptrSize; ++funNum)
  108.     //{
  109.     //  std::cout << fptr[funNum](arr, arrSize) << '\n';
  110.     //}
  111.  
  112.     /*int val{ 0 };
  113.     void(*fPtr)() { nullptr };
  114.  
  115.     std::cout << "Enter some integer number\n";
  116.     std::cin >> val;
  117.  
  118.     if (val == 0) { fPtr = zero; };
  119.     if (val > 0) { fPtr = above; };
  120.     if (val < 0) { fPtr = beyond; };
  121.  
  122.     if (fPtr) { fPtr(); }*/
  123.     //else { std::cout << "fPtr = nullptr"; }
  124.  
  125.     //void (*funPtr)() { fun }; //void(*)()
  126.     //void (*funNumPtr)(int) { funNum };
  127.     //int (*minMaxPtr)(int, int) { min };
  128.  
  129.     //double (*fPtr)(int, bool, long) { functD };
  130.  
  131.     //std::cout << fun << " < === > " << funPtr << '\n';
  132.     //std::cout << funNum << " < === > " << funNumPtr << '\n';
  133.     //std::cout << min << " < === > " << minMaxPtr << '\n';
  134.  
  135.     //std::cout << '\n';
  136.  
  137.     //funPtr = fun1;
  138.     //funNumPtr = countdown;
  139.     //minMaxPtr = min;
  140.  
  141.     //std::cout << fun1 << " < === > " << funPtr << '\n';
  142.     //std::cout << countdown << " < === > " << funNumPtr << '\n';
  143.     //std::cout << max << " < === > " << minMaxPtr << '\n';
  144.  
  145.     //funNumPtr(5);
  146.     //std::cout << minMaxPtr(34, 23) << '\n';
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement