ivana_andreevska

Zadaca so LunaPark

Jun 19th, 2021
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.02 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. #include <ctype.h>
  4. #include <string.h>
  5. #include <math.h>
  6. using namespace std;
  7.  
  8. class InvalidRatingException
  9. {
  10. public:
  11.     void print()
  12.     {
  13.         cout<<"Ocenata za parkot ne e validna"<<endl;
  14.     }
  15. };
  16.  
  17.  
  18. class LunaPark
  19. {
  20. protected:
  21.     char adresa[100];
  22.     int godina;
  23.     int mesec;
  24.     float minimalno_vreme;
  25.     int br_atrakcii;
  26. public:
  27.     LunaPark(char *adresa="", int godina=0 , int mesec=0 , float minimalno_vreme=0 , int br_atrakcii=0)
  28.     {
  29.         this->godina=godina;
  30.         this->mesec=mesec;
  31.         this->minimalno_vreme=minimalno_vreme;
  32.         this->br_atrakcii=br_atrakcii;
  33.     }
  34.  
  35.     virtual float rating()
  36.     {
  37.         return minimalno_vreme*br_atrakcii;
  38.     }
  39.  
  40.     friend ostream &operator<<(ostream &out, LunaPark &p)
  41.     {
  42.         out<<p.adresa<<" "<<p.mesec<<"."<<p.godina<<" "<<p.rating()<<endl;
  43.         return out;
  44.     }
  45. };
  46.  
  47. class AdventurePark:public LunaPark
  48. {
  49. private:
  50.     int maksPosetiteli;
  51.     float *oceni; //dinamicki rezervirano pole
  52.     int n; //broj oceni
  53.     const static float koeficient;
  54. public:
  55.     AdventurePark(char *adresa="", int godina=0 , int mesec=0 , float minimalno_vreme=0 , int br_atrakcii=0,
  56.                    float *oceni=0, int n=0,int maksPosetiteli=0):LunaPark(adresa,godina,mesec,minimalno_vreme,br_atrakcii)
  57.         {
  58.             this->maksPosetiteli=maksPosetiteli;
  59.             this->n=n;
  60.  
  61.  
  62.             this->oceni=new float[n];
  63.  
  64.             for(int i=0;i<n;i++)
  65.             {
  66.                 this->oceni[i]=oceni[i];
  67.             }
  68.         }
  69.  
  70.         AdventurePark(const AdventurePark &dr)
  71.         {
  72.             //copy const koga nekoja klasa nasleduva od druga
  73.             godina=dr.godina;
  74.             mesec=dr.mesec;
  75.             minimalno_vreme=dr.minimalno_vreme;
  76.             br_atrakcii=dr.br_atrakcii;
  77.  
  78.             maksPosetiteli=dr.maksPosetiteli;
  79.             n=dr.n;
  80.  
  81.             for(int i=0;i<n;i++)
  82.             {
  83.                 this->oceni[i]=dr.oceni[i];
  84.             }
  85.         }
  86.  
  87.         AdventurePark &operator=(AdventurePark &dr)
  88.         {
  89.             if(this!=&dr)
  90.             {
  91.             godina=dr.godina;
  92.             mesec=dr.mesec;
  93.             minimalno_vreme=dr.minimalno_vreme;
  94.             br_atrakcii=dr.br_atrakcii;
  95.  
  96.             maksPosetiteli=dr.maksPosetiteli;
  97.             n=dr.n;
  98.             delete[]oceni;
  99.             oceni=new float[n];
  100.             for(int i=0;i<n;i++)
  101.             {
  102.                 this->oceni[i]=dr.oceni[i];
  103.             }
  104.             }
  105.             return *this;
  106.         }
  107.  
  108.         ~AdventurePark()
  109.         {
  110.             delete[]oceni;
  111.         }
  112.  
  113.         float rating()
  114.         {
  115.             //preoptovaruvanje na virtual
  116.             float osnoven_rating=LunaPark::rating(); // pristap do osnovniot
  117.             float prosek=0.0;
  118.  
  119.             for(int i=0;i<n;i++)
  120.             {
  121.                 prosek+=oceni[i];
  122.             }
  123.  
  124.             prosek=prosek/n*1.0;
  125.  
  126.             osnoven_rating+=prosek*koeficient;
  127.  
  128.             if(maksPosetiteli<500)
  129.             {
  130.                 osnoven_rating*0.85;
  131.             }
  132.  
  133.             return osnoven_rating;
  134.         }
  135.  
  136.         AdventurePark &operator+=(float ocena)
  137.         {
  138.             if(ocena<0 || ocena>10)
  139.             {
  140.                 throw InvalidRatingException();
  141.             }
  142.             float *temp=new float[n+1];
  143.             for(int i=0;i<n;i++)
  144.             {
  145.                 temp[i]=oceni[i];
  146.                 temp[n++]=ocena;
  147.                 delete[]oceni;
  148.                 oceni=temp;
  149.                 return *this;
  150.             }
  151.         }
  152.  
  153.         void setnumberGrades(int nn)
  154.         {
  155.             n=nn;
  156.         }
  157.  
  158.         void getnumberGrades(int nn)
  159.         {
  160.             n=nn;
  161.         }
  162.  
  163.         AdventurePark &operator++()
  164.         {
  165.             //prefiks notacija
  166.             maksPosetiteli++;
  167.             return *this;
  168.         }
  169.  
  170. };
  171.  
  172. const float AdventurePark::koeficient=0.5;
  173.  
  174. int main()
  175. {
  176.     //gotov main
  177.     return 0;
  178. }
  179.  
Advertisement
Add Comment
Please, Sign In to add comment