Advertisement
avr39-ripe

bbr192FPtrLectaddition

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