Advertisement
MariuszPienkosz

Searching for the max or min depending on the pointer

Dec 9th, 2016
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.96 KB | None | 0 0
  1. //Zad22-18c-s13810
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6.  
  7. template <class Typ>
  8.  
  9. Typ min_max (Typ tab[], int size, bool (*F)(Typ t1, Typ t2)){
  10.     Typ ekstremum = tab[0];
  11.     for(int i=0; i<size; i++){
  12.         if(F(tab[i], ekstremum))
  13.             ekstremum = tab[i];
  14.     }
  15.     return ekstremum;
  16. }
  17.  
  18. template <class Typ>
  19.  
  20. void show_tab(Typ tab[], int size){
  21.     for(int i=0; i<size; i++)
  22.         cout << tab[i] << " ";
  23.  
  24.     cout << endl;
  25. }
  26.  
  27. template <class Typ>
  28.  
  29. bool mniejsze(Typ pierwszy, Typ drugi){
  30.     return pierwszy < drugi;
  31. }
  32.  
  33. template <class Typ>
  34.  
  35. bool wieksze(Typ pierwszy, Typ drugi){
  36.     return pierwszy > drugi;
  37. }
  38.  
  39. int main()
  40. {
  41.     char text[] = "lalamidoczyliporykiwanieszarpidrutow";
  42.     int size = sizeof(text)-1;
  43.     show_tab(text, size);
  44.  
  45.     bool (*wskaz_char)(char, char);
  46.  
  47.     wskaz_char = wieksze;
  48.     char wyn_char = min_max(text, size, wskaz_char);
  49.     cout << "   najwiekszy: " << wyn_char;
  50.  
  51.     wskaz_char = mniejsze;
  52.     wyn_char = min_max(text, size, wskaz_char);
  53.     cout << "   najmniejszy: " << wyn_char << endl << endl;
  54.  
  55.  
  56.     int inty[] = {6, 5, 4, 3, 9, 8, 7};
  57.     size = sizeof(inty)/sizeof(int);
  58.     show_tab(inty, size);
  59.  
  60.     bool (*wskaz_int)(int, int);
  61.  
  62.     wskaz_int = wieksze;
  63.     int wyn_int = min_max(inty, size, wskaz_int);
  64.     cout << "   najwiekszy: " << wyn_int;
  65.  
  66.     wskaz_int = mniejsze;
  67.     wyn_int = min_max(inty, size, wskaz_int);
  68.     cout << "   najmniejszy: " << wyn_int << endl << endl;
  69.  
  70.  
  71.     double duble[] = {5.324, -1.111, 9.87654, 123.456, -101.010, 33.33};
  72.     size = sizeof(duble)/sizeof(double);
  73.     show_tab(duble, size);
  74.  
  75.     bool (*wskaz_double)(double, double);
  76.  
  77.     wskaz_double = wieksze;
  78.     double wyn_double = min_max(duble, size, wskaz_double);
  79.     cout << "   najwiekszy: " << wyn_double;
  80.  
  81.     wskaz_double = mniejsze;
  82.     wyn_double = min_max(duble, size, wskaz_double);
  83.     cout << "   najmniejszy: " << wyn_double << endl << endl;
  84.  
  85.     return 0;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement