Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cstring>
- using namespace std;
- class Delo
- {
- protected:
- char ime [50];
- int godina;
- char zemja[50];
- public:
- Delo(char * ime = "" ,int godina = 0 , char * zemja="" )
- {
- strcpy(this->ime,ime);
- this->godina=godina;
- strcpy(this->zemja,zemja);
- }
- Delo(const Delo &d)
- {
- strcpy(this->ime,d.ime);
- this->godina=d.godina;
- strcpy(this->zemja,d.zemja);
- }
- char *getIme(){return this->ime;}
- char *getZemja(){return this->zemja;}
- int getGodina(){return this->godina;}
- void setIme(char*ime){strcpy(ime,ime);}
- void setZemja(char*zemja){strcpy(zemja,zemja);}
- void setGodina(int godina){godina=godina;}
- bool operator==(const Delo &d)
- {
- return (strcmp(ime,d.ime)==0);
- }
- };
- class Pretstava
- {
- protected:
- Delo delo;
- int n;
- char data[15];
- void copy(const Pretstava &p)
- {
- this->delo=p.delo;
- this->n=p.n;
- strcpy(this->data,p.data);
- }
- public:
- Pretstava(Delo delo , int n , char *data)
- {
- this->delo=delo;
- this->n=n;
- strcpy(this->data,data);
- }
- Pretstava(const Pretstava &p)
- {
- copy(p);
- }
- virtual int cena ()
- {
- int M , N;
- if(delo.getGodina()>1900)
- {M=50;}
- else if(delo.getGodina()>1800)
- {M=75;}
- else
- {M=100;}
- if(strcmp(delo.getZemja(),"Italija")==0)
- {N=100;}
- else if(strcmp(delo.getZemja(),"Rusija")==0)
- {N=150;}
- else{N=80;}
- return N+M;
- }
- Delo getDelo() {return delo;}
- int getN(){return this->n;}
- };
- class Balet : public Pretstava
- {
- private:
- static int pocetnaCena;
- public:
- Balet(Delo delo , int n , char *data): Pretstava(delo, n , data){}
- int cena()
- {
- return Pretstava::cena()+pocetnaCena;
- }
- static void setCenaBalet (int Cena){pocetnaCena=Cena;}
- };
- int Balet::pocetnaCena=150;
- class Opera : public Pretstava
- {
- public:
- Opera(Delo delo , int n , char *data): Pretstava(delo, n , data){}
- };
- int prihod(Pretstava**pretstavi , int n )
- {
- int profit=0;
- for(int i = 0 ; i < n ; i ++)
- {
- if(pretstavi[i]==pretstavi[i]){
- profit+=pretstavi[i]->cena() * pretstavi[i]->getN();
- }
- }
- return profit;
- }
- int brojPretstaviNaDelo(Pretstava **pretstavi , int n , Delo &delo)
- {
- int brojac=0;
- for (int i = 0 ; i < n ; i ++)
- {
- if(pretstavi[i]->getDelo()==delo)
- {
- brojac++;
- }
- }
- return brojac;
- }
- //citanje na delo
- Delo readDelo(){
- char ime[50];
- int godina;
- char zemja[50];
- cin>>ime>>godina>>zemja;
- return Delo(ime,godina,zemja);
- }
- //citanje na pretstava
- Pretstava* readPretstava(){
- int tip; //0 za Balet , 1 za Opera
- cin>>tip;
- Delo d=readDelo();
- int brojProdadeni;
- char data[15];
- cin>>brojProdadeni>>data;
- if (tip==0) return new Balet(d,brojProdadeni,data);
- else return new Opera(d,brojProdadeni,data);
- }
- int main(){
- int test_case;
- cin>>test_case;
- switch(test_case){
- case 1:
- //Testiranje na klasite Opera i Balet
- {
- cout<<"======TEST CASE 1======="<<endl;
- Pretstava* p1=readPretstava();
- cout<<p1->getDelo().getIme()<<endl;
- Pretstava* p2=readPretstava();
- cout<<p2->getDelo().getIme()<<endl;
- }break;
- case 2:
- //Testiranje na klasite Opera i Balet so cena
- {
- cout<<"======TEST CASE 2======="<<endl;
- Pretstava* p1=readPretstava();
- cout<<p1->cena()<<endl;
- Pretstava* p2=readPretstava();
- cout<<p2->cena()<<endl;
- }break;
- case 3:
- //Testiranje na operator ==
- {
- cout<<"======TEST CASE 3======="<<endl;
- Delo f1=readDelo();
- Delo f2=readDelo();
- Delo f3=readDelo();
- if (f1==f2) cout<<"Isti se"<<endl; else cout<<"Ne se isti"<<endl;
- if (f1==f3) cout<<"Isti se"<<endl; else cout<<"Ne se isti"<<endl;
- }break;
- case 4:
- //testiranje na funkcijata prihod
- {
- cout<<"======TEST CASE 4======="<<endl;
- int n;
- cin>>n;
- Pretstava **pole=new Pretstava*[n];
- for (int i=0;i<n;i++){
- pole[i]=readPretstava();
- }
- cout<<prihod(pole,n);
- }break;
- case 5:
- //testiranje na prihod so izmena na cena za 3d proekcii
- {
- cout<<"======TEST CASE 5======="<<endl;
- int cenaBalet;
- cin>>cenaBalet;
- //cout<<cenaBalet<<"test"<<endl;
- Balet::setCenaBalet(cenaBalet);
- int n;
- cin>>n;
- // cout<<n<<"test"<<endl;
- Pretstava **pole=new Pretstava*[n];
- for (int i=0;i<n;i++){
- pole[i]=readPretstava();
- }
- cout<<prihod(pole,n);
- }break;
- case 6:
- //testiranje na brojPretstaviNaDelo
- {
- cout<<"======TEST CASE 6======="<<endl;
- int n;
- cin>>n;
- Pretstava **pole=new Pretstava*[n];
- for (int i=0;i<n;i++){
- pole[i]=readPretstava();
- }
- Delo f=readDelo();
- cout<<brojPretstaviNaDelo(pole,n,f);
- }break;
- };
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement