Advertisement
metalni

OOP Zadaci za vezbanje 2 Opera i balet

Jun 2nd, 2020
599
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.76 KB | None | 0 0
  1. #include<iostream>
  2. #include<string.h>
  3. using namespace std;
  4.  
  5. class Delo{
  6.     private:
  7.         char name[50];
  8.         int year;
  9.         char origin[50];
  10.         const void copy_obj(const Delo &orig){
  11.             strcpy(this->name, orig.name);
  12.             this->year = orig.year;
  13.             strcpy(this->origin, orig.origin);
  14.         }
  15.     public:
  16.         Delo(){
  17.             strcpy(this->name, "None");
  18.             this->year = 0;
  19.             strcpy(this->origin, "Uknown");
  20.         }
  21.         Delo(const char * name, const int year, const char * origin){
  22.             strcpy(this->name, name);
  23.             this->year = year;
  24.             strcpy(this->origin, origin);
  25.         }
  26.         Delo(const Delo &orig){
  27.             this->copy_obj(orig);
  28.         }
  29.         Delo &operator=(const Delo &orig){
  30.             if(this != &orig)
  31.                 this->copy_obj(orig);
  32.             return *this;
  33.         }
  34.         ~Delo(){}
  35.         bool operator==(Delo &orig){
  36.             return !(strcmp(this->name, orig.name));
  37.         }
  38.         const char * getIme(){
  39.             return this->name;
  40.         }
  41.         const int getYear(){
  42.             return this->year;
  43.         }
  44.         const char * getOrigin(){
  45.             return this->origin;
  46.         }
  47. };
  48.  
  49. class Pretstava{
  50.     protected:
  51.         Delo d;
  52.         int noSold;
  53.         char data[15];
  54.     public:
  55.         Pretstava(){
  56.             this->noSold = 0;
  57.             strcpy(this->data, "None");
  58.         }
  59.         Pretstava(const Delo d, const int noSold, const char * data){
  60.             this->d = d;
  61.             this->noSold = noSold;
  62.             strcpy(this->data, data);
  63.         }
  64.         ~Pretstava(){}
  65.         virtual const int cena(){
  66.             int n,m;
  67.             int god=d.getYear();
  68.             if(god>1900) m=50;
  69.             else if(god>1800 && god <1900) m=75;
  70.             else m=100;
  71.            
  72.             if(!strcmp(d.getOrigin(),"Rusija"))  n=150;
  73.             else if(!strcmp(d.getOrigin(),"Italija")) n=100;
  74.             else n=80;
  75.        
  76.             return m+n;
  77.         }
  78.         Delo getDelo(){
  79.             return this->d;
  80.         }
  81.         const int getSold(){
  82.             return this->noSold;
  83.         }
  84. };
  85.  
  86. class Balet : public Pretstava{
  87.     private:
  88.         static int fee;
  89.     public:
  90.         Balet(){}
  91.         Balet(const Delo d, const int noSold, const char * data) : Pretstava(d, noSold, data){}
  92.         ~Balet(){}
  93.         static void setCenaBalet(int newFee){
  94.             fee = newFee;
  95.         }
  96.         const int cena(){
  97.             return Pretstava::cena() + fee;
  98.         }
  99. };
  100. int Balet::fee=150;
  101.  
  102. class Opera : public Pretstava{
  103.     public:
  104.         Opera(){}
  105.         Opera(const Delo d, const int noSold, const char * data) : Pretstava(d, noSold, data){}
  106.         ~Opera(){}
  107. };
  108.  
  109. int prihod(Pretstava **p, int n){
  110.     int total = 0.0;
  111.     for(int i=0; i<n; i++)
  112.         total += p[i]->cena() * p[i]->getSold();
  113.     return total;
  114. }
  115.  
  116. int brojPretstaviNaDelo(Pretstava **p, int n, Delo &d){
  117.     int count = 0;
  118.     for(int i=0; i<n; i++)
  119.         if(p[i]->getDelo() == d)
  120.             count++;
  121.     return count;
  122. }
  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