StefiIOE

Zhicani Instrumenti polimorfizam

May 17th, 2020
585
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<iostream>
  2. #include<cstring>
  3.  
  4. using namespace std;
  5.  
  6. class ZicanInstrument{
  7. protected:
  8.     char ime [20];
  9.     int broj;
  10.     int cena;
  11.     public:
  12.     ZicanInstrument(char*ime="", int broj = 0 , int cena = 0 ){
  13.     strcpy(this->ime,ime);
  14.         this->broj=broj;
  15.         this->cena=cena;
  16.     }
  17.     ZicanInstrument(const ZicanInstrument &z)
  18.     {
  19.         strcpy(this->ime,z.ime);
  20.         this->broj=z.broj;
  21.         this->cena=z.cena;
  22.     }
  23.     virtual int Cena()=0;
  24.     int getBroj(){return this->broj;}
  25.    
  26. };
  27. bool operator==(ZicanInstrument &levo , ZicanInstrument &desno)
  28. {
  29. return levo.getBroj()==desno.getBroj();
  30. }
  31. class Mandolina : public ZicanInstrument
  32. {
  33.     private:
  34.     char forma[20];
  35.     public:
  36.     Mandolina(char*ime="", int broj = 0 , int cena = 0 , char*forma=""):ZicanInstrument(ime,broj,cena){
  37.     strcpy(this->forma,forma);
  38.     }
  39.     Mandolina(const Mandolina &m):ZicanInstrument(m){
  40.     strcpy(this->forma,m.forma);
  41.     }
  42.     int Cena()
  43.     {
  44.         if(strcmp(forma,"Neapolitan")==0)
  45.         {
  46.         return cena+(cena*0.15);  
  47.         }
  48.         else
  49.             return cena;
  50.     }
  51.     friend ostream &operator <<(ostream &out , const Mandolina &m)
  52.     {
  53.     out<<m.ime<<" "<<m.broj<<" "<<m.cena<<" "<<m.forma<<" "<<endl;
  54.         return out;
  55.     }
  56.    
  57.  
  58. };
  59. class Violina : public ZicanInstrument{
  60. private:
  61.     float golemina;
  62.     public:
  63.     Violina(char*ime="", int broj = 0 , int cena = 0 ,float golemina = 0.0):ZicanInstrument(ime,broj,cena)
  64.     {
  65.         this->golemina=golemina;
  66.     }
  67.     Violina(const Violina &v) :ZicanInstrument (v)
  68.     {
  69.     this->golemina=v.golemina;
  70.     }
  71.     int Cena()
  72.     {
  73.         if(golemina==0.25)
  74.         {
  75.         return cena+(cena * 0.1);
  76.         }
  77.         else if(golemina==1){
  78.         return cena+(cena *0.2);
  79.         }
  80.         return cena;
  81.     }
  82.         friend ostream &operator <<(ostream &out , const Violina &v)
  83.     {
  84.     out<<v.ime<<" "<<v.broj<<" "<<v.cena<<" "<<v.golemina<<" "<<endl;
  85.         return out;
  86.     }
  87.    
  88.    
  89. };
  90. void pecatiInstrumenti(ZicanInstrument &zi, ZicanInstrument **instrument, int n)
  91. {
  92.  
  93.     for(int i = 0 ; i < n ; i++)
  94.     {
  95.         if(instrument[i]->getBroj()==zi.getBroj())
  96.         {
  97.         cout<<instrument[i]->Cena()<<endl;
  98.         }
  99.     }
  100. }
  101. int main() {
  102.     char ime[20];
  103.     int brojZici;
  104.     float cena;
  105.     char forma[20];
  106.     cin >> ime >> brojZici >> cena >> forma;
  107.     Mandolina m(ime, brojZici, cena, forma);
  108.     int n;
  109.     cin >> n;
  110.     ZicanInstrument **zi = new ZicanInstrument*[2 * n];
  111.     for(int i = 0; i < n; ++i) {
  112.         cin >> ime >> brojZici >> cena >> forma;
  113.         zi[i] = new Mandolina(ime, brojZici, cena, forma);
  114.     }
  115.     for(int i = 0; i < n; ++i) {
  116.         float golemina;
  117.         cin >> ime >> brojZici >> cena >> golemina;
  118.         zi[n + i] = new Violina(ime, brojZici, cena, golemina);
  119.     }
  120.     pecatiInstrumenti(m, zi, 2 * n);
  121.     for(int i = 0; i < 2 * n; ++i) {
  122.         delete zi[i];
  123.     }
  124.     delete [] zi;
  125.     return 0;
  126. }
RAW Paste Data