Advertisement
Tucancitto

Pb09. Template

May 26th, 2021
914
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.25 KB | None | 0 0
  1. // Bani.h
  2. #pragma once
  3. #include <iostream>
  4. using namespace std;
  5.  
  6. template<class T>
  7. class Bani
  8. {
  9. protected:
  10.     T m_bani;
  11. public:
  12.     Bani();
  13.     Bani(T);
  14.  
  15.     Bani operator+(Bani b);
  16.     Bani operator-(Bani b);
  17.     Bani operator*(Bani b);
  18.     Bani operator/(Bani b);
  19.  
  20.     friend ostream& operator<<(ostream& cout, Bani b)
  21.     {
  22.         cout << b.m_bani;
  23.         return cout;
  24.     }
  25. };
  26.  
  27. template<class T>
  28. Bani<T>::Bani() : Bani(0) {}
  29.  
  30. template<class T>
  31. Bani<T>::Bani(T m_bani)
  32. {
  33.     this->m_bani = m_bani;
  34. }
  35.  
  36. template<class T>
  37. Bani<T> Bani<T>::operator+(Bani b)
  38. {
  39.     return this->m_bani + b.m_bani;
  40. }
  41.  
  42. template<class T>
  43. Bani<T> Bani<T>::operator-(Bani b)
  44. {
  45.     return this->m_bani - b.m_bani;
  46. }
  47.  
  48. template<class T>
  49. Bani<T> Bani<T>::operator*(Bani b)
  50. {
  51.     return this->m_bani * b.m_bani;
  52. }
  53.  
  54. template<class T>
  55. Bani<T> Bani<T>::operator/(Bani b)
  56. {
  57.     return this->m_bani / b.m_bani;
  58. }
  59.  
  60. // Pereche.h
  61. #include <iostream>
  62. using namespace std;
  63.  
  64. template <class T>
  65. class Pereche
  66. {
  67. private:
  68.     T comp1, comp2;
  69. public:
  70.     Pereche() : Pereche(0, 0) {}
  71.     Pereche(T c1, T c2)
  72.     {
  73.         comp1 = c1;
  74.         comp2 = c2;
  75.     }
  76.  
  77.     T adunare()
  78.     {
  79.         return comp1 + comp2;
  80.     }
  81.  
  82.     T scadere()
  83.     {
  84.         return comp1 - comp2;
  85.     }
  86.  
  87.     T inmultire()
  88.     {
  89.         return comp1 * comp2;
  90.     }
  91.  
  92.     T impartire()
  93.     {
  94.         return comp1 / comp2;
  95.  
  96.     }
  97.  
  98.     void afisareOp()
  99.     {
  100.         cout << "Rezultatul adunarii componentelor este: " << adunare() << endl;
  101.         cout << "Rezultatul scaderii componentelor este: " << scadere() << endl;
  102.         cout << "Rezultatul inmultirii componentelor este: " << inmultire() << endl;
  103.         cout << "Rezultatul impartirii componentelor este: " << impartire() << endl << endl;
  104.     }
  105. };
  106.  
  107. // main
  108. #include "Bani.h"
  109. #include "Pereche.h"
  110.  
  111. template<class T>
  112. T suma(T a, T b, T c)
  113. {
  114.     return a + b + c;
  115. }
  116.  
  117. int main()
  118. {
  119.     int a = 5, b = 7, c = 9;
  120.     cout << suma(a, b, c) << endl;
  121.  
  122.     double a1 = 5.6, b1 = 7.4, c1 = 9.8;
  123.     cout << suma(a1, b1, c1) << endl;
  124.  
  125.     Bani<double> a2(5.45), b2(9.65), c2(1.27);
  126.     cout << suma(a2, b2, c2) << endl << endl;
  127.  
  128.     Pereche<int> pInt(2, 5);
  129.     pInt.afisareOp();
  130.  
  131.     Pereche<double> pDouble(2.4, -6.7);
  132.     pDouble.afisareOp();
  133.  
  134.     Pereche<Bani<int>> pBaniInt(5, 7);
  135.     pBaniInt.afisareOp();
  136.  
  137.     Pereche<Bani<double>> pBaniDouble(-23.5, 67.8);
  138.     pBaniDouble.afisareOp();
  139.  
  140.     return 0;
  141. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement