Advertisement
LegoDrifter

OOP Opera i balet

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