Advertisement
LDG2875

sdf

Mar 16th, 2022
862
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.17 KB | None | 0 0
  1. #include <iostream>
  2. #define N 101
  3.  
  4. using namespace std;
  5.  
  6. //===================== DATA =====================//
  7.  
  8. class Date
  9. {
  10.     //date
  11.     int zi, luna, an;
  12.  
  13.     //metode
  14.     public:
  15.     void citire();
  16.     void afisare();
  17.     friend istream& operator>>(istream&, Date&);
  18.     friend ostream& operator<<(ostream&, Date&);
  19.     friend bool operator==(Date&, Date&);
  20.     friend Date operator+(Date& , int&);
  21. };
  22.  
  23. void Date::citire()
  24. {
  25.     cout <<"In ce data suntem? (folositi formatul: zz ll aaaa)\n";
  26.     bool ok = 0;
  27.     while(!ok)
  28.     {
  29.         cin >> zi >> luna >> an;
  30.         if(luna <= 12)
  31.             if((luna % 2 == 1 && zi <= 31) || (luna % 2 == 0 && zi <= 30)) {ok = 1; break;}
  32.         cout << "Data invalida! Mai incercati! \n";
  33.     }
  34. }
  35.  
  36. void Date::afisare()
  37. {
  38.     cout <<"Astazi este data de:\n";
  39.     cout << zi <<"/"<< luna <<"/"<< an <<"\n";
  40. }
  41.  
  42. istream& operator>>(istream& i, Date& d)
  43. {
  44.     i >> d.zi >> d.luna >> d.an;
  45.     return i;
  46. }
  47.  
  48. ostream& operator<<(ostream& o, Date& d)
  49. {
  50.     o << d.zi <<"/"<< d.luna <<"/"<< d.an;
  51.     return o;
  52. }
  53.  
  54. bool operator==(Date& d1, Date& d2)
  55. {
  56.     return (d1.zi == d2.zi && d1.luna == d2.luna);
  57. }
  58.  
  59. Date operator+(Date& d, int& nr_zile)
  60. {
  61.     Date a = d;
  62.     while(nr_zile!=0)
  63.     {
  64.         if(a.luna == 12 && a.zi == 31) {a.zi = 1; a.luna = 1; a.an = a.an + 1;}
  65.         else if((a.luna == 2 && a.an % 4 == 1 && a.zi == 28) || (a.luna == 2 && a.an % 4 == 0 && a.zi == 29)){a.zi = 1; a.luna = a.luna + 1;}
  66.             else if(a.luna <= 5 && ((a.luna % 2 == 1 && a.zi == 31) || (a.luna % 2 == 0 && a.zi == 30))) {a.luna = a.luna + 1; a.zi=1;}
  67.                 else if(a.luna > 5 && ((a.luna % 2 == 1 && a.zi == 30) || (a.luna % 2 == 0 && a.zi == 31))) {a.luna = a.luna + 1; a.zi=1;}
  68.                     else a.zi = a.zi + 1;
  69.         nr_zile--;
  70.     }
  71.     return a;
  72. }
  73.  
  74. void Verificare(Date& d1, Date& d2)
  75. {
  76.     if(d1 == d2) cout <<"Se pare ca astazi este ziua ta...La multi ani!!! \n";
  77.     else cout <<"Nu este inca ziua ta...mai ai de aseptat. \n";
  78.  
  79. }
  80.  
  81.  
  82. //================= CUMPARATURA =================//
  83.  
  84. class Cumparatura
  85. {
  86.     //date
  87.     string nume;
  88.     double cantitate;
  89.     double pret;
  90.  
  91.     //metode
  92.     public:
  93.     void citire();
  94.     void afisare();
  95.     friend istream& operator>>(istream&, Cumparatura&);
  96.     friend ostream& operator<<(ostream&, Cumparatura&);
  97.     friend bool operator==(Cumparatura&, Cumparatura&);
  98.     friend Cumparatura operator+(Cumparatura&, Cumparatura&);
  99.     Cumparatura()
  100.     {
  101.         nume = "";
  102.         cantitate = 0;
  103.         pret = 0;
  104.     }
  105.     ~Cumparatura()
  106.     {
  107.         //cout <<"distruge \n";
  108.     }
  109.     Cumparatura(const Cumparatura& c)
  110.     {
  111.         nume = c.nume;
  112.         cantitate = c.cantitate;
  113.         pret = c.pret;
  114.     }
  115.  
  116.     //set-eri si get-eri
  117.     void set_nume(string n){nume = n;}
  118.     string get_nume(){return nume;}
  119.     void set_cantitate(double c){cantitate = c;}
  120.     double get_cantitate(){return cantitate;}
  121.     void set_pret(double p){pret = p;}
  122.     double get_pret(){return pret;}
  123. }lista[N];
  124.  
  125.  
  126. void Cumparatura::citire()
  127. {
  128.     //cout <<"Ce trebuie cumparat? (nume cant pret)\n";
  129.     cin >> nume >> cantitate >> pret;
  130. }
  131.  
  132. void Cumparatura::afisare()
  133. {
  134.     //cout <<"Trebuie cumparat: \n";
  135.     cout << nume <<" "<< cantitate <<" "<< pret <<"\n";
  136. }
  137.  
  138. istream& operator>>(istream& i, Cumparatura& c)
  139. {
  140.     i >> c.nume >> c.cantitate >> c.pret;
  141.     return i;
  142. }
  143.  
  144. ostream& operator<<(ostream& o, Cumparatura& c)
  145. {
  146.     o << c.nume <<" "<< c.cantitate <<" "<< c.pret;
  147.     return o;
  148. }
  149.  
  150. bool operator==(Cumparatura& c1, Cumparatura& c2)
  151. {
  152.     return (c1.nume == c2.nume && c1.pret == c2.pret);
  153. }
  154.  
  155.  
  156. Cumparatura operator+(Cumparatura& c1, Cumparatura& c2)
  157. {
  158.     Cumparatura c = c1;
  159.     c.cantitate = c1.cantitate + c2.cantitate;
  160.     return c;
  161. }
  162.  
  163.  
  164.  
  165. //==================== INDIVID ===================//
  166.  
  167. class Individ
  168. {
  169.     //date
  170.     string nume;
  171.     string prenume;
  172.     Date birthday;
  173.    
  174.     //metode
  175.     public:
  176.     void citire();
  177.     void afisare();
  178.     void afisare_birthday();
  179.     friend istream& operator>>(istream&, Individ&);
  180.     friend ostream& operator<<(ostream&, Individ&);
  181.     friend bool operator==(Individ&, Individ&);
  182.  
  183.     //set-eri si get-eri
  184.     void set_nume(string n){nume = n;}
  185.     string get_nume(){return nume;}
  186.     void set_prenume(string p){prenume = p;}
  187.     string get_prenume(){return prenume;}
  188.     void set_birthday(Date d){birthday = d;}
  189.     Date get_birthday(){return birthday;}
  190.  
  191. }prieteni[N];
  192.  
  193. void Individ::citire()
  194. {
  195.     //cout <<"Dați numele și prenumele persoanei:\n";
  196.     cin >> nume >> prenume;
  197. }
  198.  
  199. void Individ::afisare()
  200. {
  201.     //cout <<"Numele și prenumele acestei persoane este:\n";
  202.     cout << nume <<" "<< prenume;
  203. }
  204.  
  205. void Individ::afisare_birthday()
  206. {
  207.     //cout <<"ziua de nastere a acestei persoane este:\n";
  208.     birthday.afisare();
  209. }
  210.  
  211. istream& operator>>(istream& i, Individ& p)
  212. {
  213.     i >> p.nume >> p.prenume;
  214.     return i;
  215. }
  216.  
  217. ostream& operator<<(ostream& o, Individ& p)
  218. {
  219.     o << p.nume <<" "<< p.prenume;
  220.     return o;
  221. }
  222.  
  223. bool operator==(Individ& i1, Individ& i2)
  224. {
  225.     return(i1.nume == i2.nume && i1.prenume == i2.prenume);
  226. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement