Advertisement
Guest User

Untitled

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