Advertisement
frusso1337

instrumenti c++

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