Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- #include <ctype.h>
- #include <string.h>
- #include <math.h>
- using namespace std;
- class InvalidRatingException
- {
- public:
- void print()
- {
- cout<<"Ocenata za parkot ne e validna"<<endl;
- }
- };
- class LunaPark
- {
- protected:
- char adresa[100];
- int godina;
- int mesec;
- float minimalno_vreme;
- int br_atrakcii;
- public:
- LunaPark(char *adresa="", int godina=0 , int mesec=0 , float minimalno_vreme=0 , int br_atrakcii=0)
- {
- this->godina=godina;
- this->mesec=mesec;
- this->minimalno_vreme=minimalno_vreme;
- this->br_atrakcii=br_atrakcii;
- }
- virtual float rating()
- {
- return minimalno_vreme*br_atrakcii;
- }
- friend ostream &operator<<(ostream &out, LunaPark &p)
- {
- out<<p.adresa<<" "<<p.mesec<<"."<<p.godina<<" "<<p.rating()<<endl;
- return out;
- }
- };
- class AdventurePark:public LunaPark
- {
- private:
- int maksPosetiteli;
- float *oceni; //dinamicki rezervirano pole
- int n; //broj oceni
- const static float koeficient;
- public:
- AdventurePark(char *adresa="", int godina=0 , int mesec=0 , float minimalno_vreme=0 , int br_atrakcii=0,
- float *oceni=0, int n=0,int maksPosetiteli=0):LunaPark(adresa,godina,mesec,minimalno_vreme,br_atrakcii)
- {
- this->maksPosetiteli=maksPosetiteli;
- this->n=n;
- this->oceni=new float[n];
- for(int i=0;i<n;i++)
- {
- this->oceni[i]=oceni[i];
- }
- }
- AdventurePark(const AdventurePark &dr)
- {
- //copy const koga nekoja klasa nasleduva od druga
- godina=dr.godina;
- mesec=dr.mesec;
- minimalno_vreme=dr.minimalno_vreme;
- br_atrakcii=dr.br_atrakcii;
- maksPosetiteli=dr.maksPosetiteli;
- n=dr.n;
- for(int i=0;i<n;i++)
- {
- this->oceni[i]=dr.oceni[i];
- }
- }
- AdventurePark &operator=(AdventurePark &dr)
- {
- if(this!=&dr)
- {
- godina=dr.godina;
- mesec=dr.mesec;
- minimalno_vreme=dr.minimalno_vreme;
- br_atrakcii=dr.br_atrakcii;
- maksPosetiteli=dr.maksPosetiteli;
- n=dr.n;
- delete[]oceni;
- oceni=new float[n];
- for(int i=0;i<n;i++)
- {
- this->oceni[i]=dr.oceni[i];
- }
- }
- return *this;
- }
- ~AdventurePark()
- {
- delete[]oceni;
- }
- float rating()
- {
- //preoptovaruvanje na virtual
- float osnoven_rating=LunaPark::rating(); // pristap do osnovniot
- float prosek=0.0;
- for(int i=0;i<n;i++)
- {
- prosek+=oceni[i];
- }
- prosek=prosek/n*1.0;
- osnoven_rating+=prosek*koeficient;
- if(maksPosetiteli<500)
- {
- osnoven_rating*0.85;
- }
- return osnoven_rating;
- }
- AdventurePark &operator+=(float ocena)
- {
- if(ocena<0 || ocena>10)
- {
- throw InvalidRatingException();
- }
- float *temp=new float[n+1];
- for(int i=0;i<n;i++)
- {
- temp[i]=oceni[i];
- temp[n++]=ocena;
- delete[]oceni;
- oceni=temp;
- return *this;
- }
- }
- void setnumberGrades(int nn)
- {
- n=nn;
- }
- void getnumberGrades(int nn)
- {
- n=nn;
- }
- AdventurePark &operator++()
- {
- //prefiks notacija
- maksPosetiteli++;
- return *this;
- }
- };
- const float AdventurePark::koeficient=0.5;
- int main()
- {
- //gotov main
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment