Advertisement
IPet

Zicani Instrumenti

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