Advertisement
amarek

OOP LV4 - Analiza

Nov 11th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.23 KB | None | 0 0
  1. // 1. Napiši predloške funkcija Max() i Min() koje kao parametre primaju
  2. // jednodimenzionalna polja i broj elemenata u polju.Funkcije pronalaze i kao
  3. // rezultat vraćaju najveći odnosno najmanji element polja.Funkciju testirati na
  4. // tri dinamički alocirana polja različitog tipa.
  5.  
  6. #include <iostream>
  7. #include <cstdlib>
  8. #include <ctime>
  9.  
  10. using namespace std;
  11.  
  12. template <typename Type>
  13. Type Max(Type arr[], int n) {
  14.     int i;
  15.     Type max = arr[0];
  16.     for (i = 0; i < n; i++) {
  17.         if (arr[i] > max) {
  18.             max = arr[i];
  19.         }
  20.     }
  21.  
  22.     return max;
  23. }
  24.  
  25. template <typename Type>
  26. Type Min(Type arr[], int n) {
  27.     int i;
  28.     Type min = arr[0];
  29.     for (i = 0; i < n; i++) {
  30.         if (arr[i] < min) {
  31.             min = arr[i];
  32.         }
  33.     }
  34.  
  35.     return min;
  36. }
  37.  
  38. int main() {
  39.     int i;
  40.  
  41.     int *a = new int[10];
  42.     for (i = 0; i < 10; i++) {
  43.         a[i] = (int)rand() * 10 / (int)RAND_MAX;
  44.     }
  45.     cout << "Max: " << Max(a, 10) << "\tMin: " << Min(a, 10) << endl;
  46.  
  47.     double *b = new double[10];
  48.     for (i = 0; i < 10; i++) {
  49.         b[i] = (double)rand() * 10 / (double)RAND_MAX;
  50.     }
  51.     cout << "Max: " << Max(b, 10) << "\tMin: " << Min(b, 10) << endl;
  52.  
  53.     char *c = new char[10];
  54.     for (i = 0; i < 10; i++) {
  55.         c[i] = (char)rand() * 10 / (char)RAND_MAX;
  56.     }
  57.     cout << "Max: " << Max(c, 10) << "\tMin: " << Min(c, 10) << endl;
  58.  
  59.     return 0;
  60. }
  61.  
  62. // 2. Napiši predložak klase UređeniPar() koja predstavlja uređeni par dvaju
  63. // objekata.Podatkovni članovi su dva dinamički alocirana objekta, a klasa mora
  64. // imati konstruktore(default, parametarski i kopije), destruktor, operator = i
  65. // operatore usporedbe.U glavnoj funkciji testirati funkcionalnost klase za tri
  66. // različita tipa podatka.
  67.  
  68. #include <iostream>
  69.  
  70. using namespace std;
  71.  
  72. template <typename Type>
  73. class OrderedPair {
  74. private:
  75.     Type *mFirst;
  76.     Type *mSecond;
  77. public:
  78.     OrderedPair() : mFirst(new Type()), mSecond(new Type()) {}
  79.  
  80.     OrderedPair(Type First, Type Second) : mFirst(new Type(First)), mSecond(new Type(Second)) {}
  81.  
  82.     OrderedPair(const OrderedPair& Ref) {
  83.         mFirst = new Type();
  84.         mSecond = new Type();
  85.         *mFirst = *Ref.mFirst;
  86.         *mSecond = *Ref.mSecond;
  87.     }
  88.  
  89.     ~OrderedPair() {
  90.         delete mFirst;
  91.         delete mSecond;
  92.     }
  93.  
  94.     OrderedPair& operator= (const OrderedPair& Ref) {
  95.         if (&Ref == this) return *this;
  96.  
  97.         *mFirst = *Ref.mFirst;
  98.         *mSecond = *Ref.mSecond;
  99.         return *this;
  100.     }
  101.  
  102.     friend bool operator== (const OrderedPair& lhs, const OrderedPair& rhs)
  103.     {
  104.         return *lhs.mFirst == *rhs.mFirst && *lhs.mSecond == *rhs.mSecond;
  105.     }
  106.  
  107.     friend bool operator!= (const OrderedPair& lhs, const OrderedPair& rhs)
  108.     {
  109.         return !operator==(lhs, rhs);
  110.     }
  111. };
  112.  
  113.  
  114. int main()
  115. {
  116.     OrderedPair<double> A(5.123, 6.187);
  117.     OrderedPair<double> B(A);
  118.  
  119.     cout << (A == B) << endl;
  120.  
  121.     OrderedPair<int> C(1, 6);
  122.     OrderedPair<int> D(-6, 8);
  123.     OrderedPair<int> E;
  124.     E = D;
  125.  
  126.     cout << (D != E) << endl;
  127.  
  128.     OrderedPair<char> F;
  129.     OrderedPair<char> G('z', 'v');
  130.     F = G;
  131.  
  132.     cout << (F == G) << endl;
  133.  
  134.     return 0;
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement