Crazy

Опера и балет

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