StefiIOE

Opera i balet vezbi

May 11th, 2020
1,907
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4.  
  5. class Delo
  6. {
  7.     protected:
  8.     char ime [50];
  9.     int godina;
  10.     char zemja[50];
  11.    
  12.     public:
  13.     Delo(char * ime = "" ,int godina = 0 , char * zemja="" )
  14.     {
  15.         strcpy(this->ime,ime);
  16.         this->godina=godina;
  17.         strcpy(this->zemja,zemja);
  18.     }
  19.     Delo(const Delo &d)
  20.     {
  21.         strcpy(this->ime,d.ime);
  22.         this->godina=d.godina;
  23.         strcpy(this->zemja,d.zemja);    
  24.     }
  25.     char *getIme(){return this->ime;}
  26.     char *getZemja(){return this->zemja;}
  27.     int getGodina(){return this->godina;}
  28.     void setIme(char*ime){strcpy(ime,ime);}
  29.     void setZemja(char*zemja){strcpy(zemja,zemja);}
  30.     void setGodina(int godina){godina=godina;}
  31.     bool operator==(const Delo &d)
  32.     {
  33.     return (strcmp(ime,d.ime)==0);
  34.     }
  35.    
  36.    
  37.  
  38. };
  39. class Pretstava
  40. {
  41.     protected:
  42.     Delo delo;
  43.     int n;
  44.     char data[15];
  45.     void copy(const Pretstava &p)
  46.     {
  47.        
  48.         this->delo=p.delo;
  49.        
  50.         this->n=p.n;
  51.         strcpy(this->data,p.data);                  
  52.    
  53.     }
  54.    
  55.     public:
  56.    
  57.     Pretstava(Delo delo , int n , char *data)
  58.     {
  59.        
  60.         this->delo=delo;
  61.        
  62.         this->n=n;
  63.         strcpy(this->data,data);                  
  64.     }
  65.     Pretstava(const Pretstava &p)
  66.     {
  67.     copy(p);
  68.     }
  69.     virtual int cena ()
  70.     {
  71.     int M , N;
  72.         if(delo.getGodina()>1900)
  73.         {M=50;}
  74.         else if(delo.getGodina()>1800)
  75.         {M=75;}
  76.         else
  77.         {M=100;}
  78.         if(strcmp(delo.getZemja(),"Italija")==0)
  79.         {N=100;}
  80.         else if(strcmp(delo.getZemja(),"Rusija")==0)
  81.         {N=150;}
  82.         else{N=80;}
  83.        
  84.         return N+M;
  85.     }
  86.    Delo getDelo() {return delo;}
  87.     int getN(){return this->n;}
  88.        
  89. };
  90. class Balet : public Pretstava
  91. {
  92.     private:
  93.     static int pocetnaCena;
  94.     public:
  95.     Balet(Delo delo , int n , char *data): Pretstava(delo, n , data){}
  96.     int cena()
  97.     {
  98.     return Pretstava::cena()+pocetnaCena;
  99.     }  
  100.     static void setCenaBalet (int Cena){pocetnaCena=Cena;}
  101.  
  102. };
  103. int Balet::pocetnaCena=150;
  104.  
  105. class Opera : public Pretstava
  106. {
  107. public:
  108.    Opera(Delo delo , int n , char *data): Pretstava(delo, n , data){}
  109.    
  110. };
  111. int prihod(Pretstava**pretstavi , int n )
  112. {
  113. int profit=0;
  114.     for(int i = 0 ; i < n ; i ++)
  115.     {
  116.         if(pretstavi[i]==pretstavi[i]){
  117.          profit+=pretstavi[i]->cena() * pretstavi[i]->getN();
  118.        
  119.     }
  120.         }
  121.      
  122.     return profit;
  123.    
  124.  
  125. }
  126.  
  127. int brojPretstaviNaDelo(Pretstava **pretstavi , int n , Delo &delo)
  128. {
  129.     int brojac=0;
  130.     for (int i = 0 ; i < n ; i ++)
  131.     {
  132.         if(pretstavi[i]->getDelo()==delo)
  133.         {
  134.         brojac++;
  135.         }
  136.        
  137.                
  138.     }
  139.     return brojac;  
  140. }
  141. //citanje na delo
  142. Delo readDelo(){
  143.     char ime[50];
  144.     int godina;
  145.     char zemja[50];
  146.     cin>>ime>>godina>>zemja;
  147.     return Delo(ime,godina,zemja);
  148. }
  149. //citanje na pretstava
  150. Pretstava* readPretstava(){
  151.     int tip; //0 za Balet , 1 za Opera
  152.     cin>>tip;
  153.     Delo d=readDelo();
  154.     int brojProdadeni;
  155.     char data[15];
  156.     cin>>brojProdadeni>>data;
  157.     if (tip==0)  return new Balet(d,brojProdadeni,data);
  158.     else return new Opera(d,brojProdadeni,data);
  159. }
  160. int main(){
  161.     int test_case;
  162.     cin>>test_case;
  163.    
  164.     switch(test_case){
  165.     case 1:
  166.     //Testiranje na klasite Opera i Balet
  167.     {
  168.         cout<<"======TEST CASE 1======="<<endl;
  169.         Pretstava* p1=readPretstava();
  170.         cout<<p1->getDelo().getIme()<<endl;
  171.         Pretstava* p2=readPretstava();
  172.         cout<<p2->getDelo().getIme()<<endl;
  173.     }break;
  174.        
  175.     case 2:
  176.     //Testiranje na  klasite Opera i Balet so cena
  177.     {
  178.         cout<<"======TEST CASE 2======="<<endl;
  179.         Pretstava* p1=readPretstava();
  180.         cout<<p1->cena()<<endl;
  181.         Pretstava* p2=readPretstava();
  182.         cout<<p2->cena()<<endl;
  183.     }break;
  184.    
  185.     case 3:
  186.     //Testiranje na operator ==
  187.     {
  188.         cout<<"======TEST CASE 3======="<<endl;
  189.         Delo f1=readDelo();
  190.         Delo f2=readDelo();
  191.         Delo f3=readDelo();
  192.        
  193.         if (f1==f2) cout<<"Isti se"<<endl; else cout<<"Ne se isti"<<endl;
  194.         if (f1==f3) cout<<"Isti se"<<endl; else cout<<"Ne se isti"<<endl;
  195.    
  196.     }break;
  197.    
  198.     case 4:
  199.     //testiranje na funkcijata prihod
  200.     {
  201.         cout<<"======TEST CASE 4======="<<endl;
  202.         int n;
  203.         cin>>n;
  204.         Pretstava **pole=new Pretstava*[n];
  205.         for (int i=0;i<n;i++){
  206.             pole[i]=readPretstava();
  207.        
  208.         }
  209.         cout<<prihod(pole,n);
  210.     }break;
  211.    
  212.     case 5:
  213.     //testiranje na prihod so izmena na cena za 3d proekcii
  214.     {
  215.         cout<<"======TEST CASE 5======="<<endl;
  216.         int cenaBalet;
  217.         cin>>cenaBalet;
  218.         //cout<<cenaBalet<<"test"<<endl;
  219.         Balet::setCenaBalet(cenaBalet);
  220.         int n;
  221.         cin>>n;
  222.        // cout<<n<<"test"<<endl;
  223.         Pretstava **pole=new Pretstava*[n];
  224.         for (int i=0;i<n;i++){
  225.             pole[i]=readPretstava();
  226.         }
  227.         cout<<prihod(pole,n);
  228.         }break;
  229.        
  230.     case 6:
  231.     //testiranje na brojPretstaviNaDelo
  232.     {
  233.         cout<<"======TEST CASE 6======="<<endl;
  234.         int n;
  235.         cin>>n;
  236.         Pretstava **pole=new Pretstava*[n];
  237.         for (int i=0;i<n;i++){
  238.             pole[i]=readPretstava();
  239.         }
  240.        
  241.         Delo f=readDelo();
  242.         cout<<brojPretstaviNaDelo(pole,n,f);
  243.     }break;
  244.    
  245.     };
  246.  
  247.  
  248. return 0;
  249. }
RAW Paste Data