Advertisement
Mitrezzz

Опера и Балет

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