StefiIOE

opera i balet

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