Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.45 KB | None | 0 0
  1.     #include <iostream>
  2.     #include <vector>
  3.     #include <memory>
  4.    
  5.     using namespace std;
  6.    
  7.     static int numarFructe=0;
  8.     class Fruct{
  9.     protected:
  10.         string nume;
  11.         int pret,valabilitate,cantitate;
  12.    
  13.     public:
  14.         Fruct(const string& nume, int pret, int valabilitate, int cantitate):
  15.                 nume(nume),pret(pret),valabilitate(valabilitate),cantitate(cantitate){numarFructe++;}
  16.    
  17.         virtual void const print(ostream &)const;
  18.    
  19.         const string& getNume() const ;
  20.    
  21.     };
  22.    
  23.     void const Fruct::print(ostream &os) const{
  24.         os<<" "<<nume<<" "<<pret<<" "<<valabilitate<<" "<<cantitate;
  25.     }
  26.    
  27.     const string& Fruct::getNume() const {
  28.         return nume;
  29.     }
  30.    
  31.     ostream& operator<<(ostream& os,const Fruct& f){
  32.         f.print(os);
  33.         return os;
  34.     }
  35.    
  36.     class Autohton:public Fruct{
  37.         string judet,producator;
  38.     public:
  39.         Autohton(const string& nume, int pret, int valabilitate,int cantitate,const string& judet,const string& producator):
  40.                 Fruct(nume, pret, valabilitate, cantitate), judet(judet), producator(producator){numarFructe++;}
  41.    
  42.         void const print(ostream &os)const;
  43.    
  44.     };
  45.    
  46.     void const Autohton::print(ostream &os) const{
  47.         Fruct::print(os);
  48.         os<<" "<<judet<<" "<<producator;
  49.     }
  50.    
  51.     class Import:public Fruct{
  52.         string tara,importator;
  53.     public:
  54.         Import(const string& nume, int pret, int valabilitate,int cantitate,const string& tara,const string& importator):
  55.                 Fruct(nume, pret, valabilitate, cantitate), tara(tara), importator(importator){numarFructe++;}
  56.    
  57.         void const print(ostream &os)const;
  58.     };
  59.    
  60.     void const Import::print(ostream &os) const{
  61.         Fruct::print(os);
  62.         os<<" "<<tara<<" "<<importator;
  63.     }
  64.    
  65.     int main() {
  66.         bool exit = false;
  67.         vector<unique_ptr<Fruct>> fructe;
  68.         while (!exit) {
  69.             cout << "Bun venit in lista fructelor, alege optiunea:" << endl;
  70.             cout << "1) Adauga fruct, 2) Afisare fructe, 3) Exit" << endl;
  71.             string nume;
  72.             int pret;
  73.             int valabilitate;
  74.             int cantitate;
  75.             string tara;
  76.             string importator;
  77.             string judet;
  78.             string producator;
  79.             int input;
  80.             cin >> input;
  81.             switch(input){
  82.                 case 1:
  83.                     cout<<"1.)Adauga fruct autohton, 2.)Adauga fruct import"<<endl;
  84.                     int auxinput;
  85.                     cin>>auxinput;
  86.                     if(auxinput == 1){
  87.                         cout<<"Nume fruct:";
  88.                         cin>>nume;
  89.    
  90.                         cout<<"Pret fruct:";
  91.                         cin>>pret;
  92.    
  93.                         cout<<"Valabilitate fruct:";
  94.                         cin>>valabilitate;
  95.    
  96.                         cout<<"Cantitate fruct:";
  97.                         cin>>cantitate;
  98.    
  99.                         cout<<"Judetul de provenienta fruct:";
  100.                         cin>>judet;
  101.    
  102.                         cout<<"Producator fruct:";
  103.                         cin>>producator;
  104.    
  105.                         fructe.push_back(make_unique<Autohton>(nume, pret, valabilitate, cantitate, judet, producator));
  106.    
  107.                     }
  108.                     else{
  109.                         cout<<"Nume fruct:";
  110.                         cin>>nume;
  111.    
  112.                         cout<<"Pret fruct:";
  113.                         cin>>pret;
  114.    
  115.                         cout<<"Valabilitate fruct:";
  116.                         cin>>valabilitate;
  117.    
  118.                         cout<<"Cantitate fruct:";
  119.                         cin>>cantitate;
  120.    
  121.                         cout<<"Tara import fruct:";
  122.                         cin>>tara;
  123.    
  124.                         cout<<"Importator fruct:";
  125.                         cin>>importator;
  126.    
  127.                         fructe.push_back(make_unique<Import>(nume, pret, valabilitate, cantitate, tara, importator));
  128.                     }
  129.                     break;
  130.                 case 2:
  131.                     for(const auto& fruct:fructe){
  132.                         cout<<*fruct<<endl;
  133.                     }
  134.                     break;
  135.                 case 3:
  136.                     exit=true;
  137.                     break;
  138.                 default:
  139.                     break;
  140.             }
  141.         }
  142.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement