Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<string.h>
- using namespace std;
- class Delo
- {
- private:
- char ime[50];
- int godina;
- char zemja[50];
- public:
- // Constructors
- Delo(){}
- Delo(const char *ime, int godina, const char *zemja)
- : godina(godina)
- {
- strcpy(this->ime, ime);
- strcpy(this->zemja, zemja);
- }
- ~Delo(){}
- // Functions
- int getGodina() const { return godina; }
- const char *getIme() const { return ime; }
- const char *getZemja() const { return zemja; }
- // Overloaded operators
- bool operator ==(const Delo &ob) { return strcmp(ime, ob.ime) == 0; }
- };
- class Pretstava
- {
- protected:
- Delo d;
- int br_karti;
- char data[15];
- public:
- // Constructors
- Pretstava(){}
- Pretstava(const Delo &d, int br_karti, const char *data)
- : d(d), br_karti(br_karti) { strcpy(this->data, data); }
- ~Pretstava(){}
- // Functions
- Delo getDelo() const { return d; }
- int getBrKarti() const { return br_karti; }
- virtual int cena() const
- {
- int N;
- int M;
- if(d.getGodina()>=1900&&d.getGodina()<2100) M = 50;
- else if(d.getGodina()>=1800&&d.getGodina()<1900 ) M = 75;
- else M = 100;
- if( strcmp(d.getZemja(),"Italija")==0 ) N = 100;
- else if( strcmp(d.getZemja(),"Rusija")==0 ) N = 150;
- else N = 80;
- return N+M;
- }
- };
- class Opera : public Pretstava
- {
- public:
- // Constructors
- Opera(){}
- Opera(Delo d, int karti, const char *data)
- : Pretstava(d, karti, data){}
- ~Opera(){}
- };
- class Balet : public Pretstava
- {
- private:
- static int cena_Balet;
- public:
- // Constructors
- Balet(){}
- Balet(Delo d, int karti, const char *data)
- : Pretstava(d, karti, data){}
- ~Balet(){}
- // Functions
- static void setCenaBalet(int x) { cena_Balet = x; }
- static int getCenaBalet() { return cena_Balet; }
- int cena() const override { return Pretstava::cena() + cena_Balet; }
- };
- int Balet::cena_Balet = 150;
- int prihod(Pretstava **niza, int n)
- {
- int sum = 0;
- for(int i = 0; i < n; i++) sum += niza[i]->cena() * niza[i]->getBrKarti();
- return sum;
- }
- int brojPretstaviNaDelo(Pretstava ** niza, int n, Delo d)
- {
- int count = 0;
- for(int i = 0; i < n; i++)
- {
- if(niza[i]->getDelo() == d) count++;
- }
- return count;
- }
- //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;
- Balet::setCenaBalet(cenaBalet);
- 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 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