Alx09

Ex de 6 POO

Mar 2nd, 2021 (edited)
441
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.35 KB | None | 0 0
  1. #include<iostream>
  2. #include<stdio.h>
  3. #include <string>
  4. #include<list>
  5. #include <iterator>
  6. using namespace std;
  7.  
  8. class Articol {
  9. private:
  10.     int tip;
  11.     string denumire;
  12.     double pret, cantitate;
  13. public:
  14.     Articol(int tip, string denumire, double pret, double cantitate) {
  15.         this->tip = tip;
  16.         this->denumire = denumire;
  17.         this->pret = pret;
  18.         this->cantitate = cantitate;
  19.     }
  20.     virtual void Afis() {
  21.         cout << denumire<<" "<< pret <<" "<<cantitate<<" " ;
  22.     }
  23. };
  24.  
  25. class Perisabil: public Articol{
  26. private:
  27.     string dataExp, categ;
  28. public:
  29.     Perisabil(int tip, string denumire, double pret, double cantitate, string dataExp, string categ) : Articol(0, denumire, pret, cantitate) {
  30.         this->dataExp = dataExp;
  31.         this->categ = categ;
  32.     }
  33.     void Afis() {
  34.         Articol::Afis();
  35.         cout << dataExp << " " << categ<<endl;
  36.     }
  37. };
  38.  
  39. class NePerisabil : public Articol {
  40. private:
  41.     string domeniu, material;
  42. public:
  43.     NePerisabil(int tip, string denumire, double pret, double cantitate, string domeniu, string material) : Articol(1, denumire, pret, cantitate) {
  44.         this->domeniu= domeniu;
  45.         this->material = material;
  46.     }
  47.     void Afis() {
  48.         Articol::Afis();
  49.         cout << domeniu << " " << material << endl;
  50.     }
  51. };
  52.  
  53. istream &operator>>(istream &in, Articol *& a) {
  54.     int tip;
  55.     string denumire;
  56.     double pret, cantitate;
  57.  
  58.     string dataExp, categ;
  59.     string domeniu, material;
  60.  
  61.     cout << "Denumire: "; in >> denumire;
  62.     cout << "Pret: "; in >> pret;
  63.     cout << "Cantitate: "; in >> cantitate;
  64.     cout << "Tip(0-Perisabil, 1-Neperisabil) "; in >> tip;
  65.     if (tip == 0) {
  66.         cout << "Data expirari: "; in >> dataExp;
  67.         cout << "Categorie: "; in >> categ;
  68.         a = new Perisabil(0, denumire, pret, cantitate, dataExp, categ);
  69.     }
  70.     else
  71.     {
  72.         cout << "Domeniu: "; in >> domeniu;
  73.         cout << "Material: "; in >> material;
  74.         a = new NePerisabil(1, denumire, pret, cantitate, domeniu, material);
  75.     }
  76.     return in;
  77. }
  78.  
  79. int main() {
  80.     list<Articol *> lista;
  81.     list<Articol *>::iterator it;
  82.     int opt;
  83.     Articol *a = NULL;
  84.     do {
  85.         cout << "0. Iesire\n";
  86.         cout << "1. Citire Tast\n";
  87.         cout << "2. Afisare\n";
  88.         cout << "Optiunea aleasa: "; cin >> opt;
  89.         switch (opt)
  90.         {
  91.         case 0: exit(0);
  92.         case 1:
  93.             cin >> a;
  94.             lista.push_back(a);
  95.             break;
  96.         case 2:
  97.             for (it = lista.begin(); it != lista.end(); it++)(*it)->Afis();
  98.             break;
  99.         default:
  100.             break;
  101.         }
  102.  
  103.     } while (1);
  104.     return 0;
  105. }
  106.  
  107.  
Add Comment
Please, Sign In to add comment