Advertisement
Guest User

ZicanInstrument

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