Advertisement
SlavkovB

Наследување 2 OOP Exercises

Jun 7th, 2016
289
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.28 KB | None | 0 0
  1. Наследување Problem 11 (0 / 0)
  2. Да се дефинира класа Ekskurzija и за неа да се чуваат следните информации:
  3.  
  4. Име char[50]
  5. Превозно средство int (0 - автобус, 1 - авион)
  6. Месец во кој ќе се изведува int (вредностите се од 1 - јануари до 12 - декември)
  7. Времетраење во денови int
  8. Цена по ден во евра double
  9. Број на патници int
  10. За класата Ekskurzija да се имплементира конструкторот со аргументи, default конструкторот, операторот за доделување и доколку е потребно, get() и set() методите за атрибутите на класата. (15 поени)
  11.  
  12. Да се дефинира класа TuristichkaAgencija за која се чуваат информации за:
  13.  
  14. името на агенцијата char[50]
  15. екскурзии кои ги нуди агенцијата (статичка низа од максимум 5 објекти од класата Ekskurzija).
  16. Број на екскурзии int
  17. Туристичката агенција може да биде традиционална или online туристичка агенција. За класите TuristichkaAgencija, TradicionalnaTuristichkaAgencija и OnlineTuristichkaAgencija да се имплементираат конструкторот со аргументи, default конструкторот и доколку е потребно, get() и set() методите за атрибутите на класата.. (15 поени)
  18.  
  19. Секој кој е заинтересиран за екскурзија тоа може да го оствари преку некоја од туристичките агенции. Цената на екскурзиите се пресметува различно кај традиционалните и online туристичките агенции:
  20.  
  21. Кај традиционалните туристички агенции цената варира во зависност од месецот во кој треба да се патува и таа се пресметува по следната формула : времетраење на екскурзијата во денови * цена по ден * број на патници + 30 * k, каде за месеците јуни, јули, август k= 1.8, а за останатите k= 1.3.
  22. Кај оnline туристичките агенции цената се пресметува по формулата : времетраење на екскурзијата во денови * цена по ден * број на патници + 20*k, каде за месеците јуни, јули, август k= 2.5, а за останатите месеци k= 2.2 ако превозното средство е авион, а за сите други превозни средства k=1.8.
  23. Вкупната добивка на туристичката агенција од ексурзиите треба да се пресмета со функцијата double vkupnaDobivka() која треба да се имплементира. Таа се пресметува како збир од цените кои ги наплаќаат туристичките агенции за сите екскурзии. (30 поени)
  24.  
  25. (Пример: Традиционална туристичка агенција нуди 2 екскурзии. Првата трае 14 дена, за неа се имаат пријавено 36 патници, кошта 30 евра на ден и се изведува во месец јуни. Втората трае 10 дена, за неа се имаат пријавено 15 патници, кошта 28 евра на ден и се изведува во месец фебруари. Заработувачката на првата агенцијата се пресметува на следниот начин: 14 * 30 * 36+30 * 1.8=15174. Заработувачката на втората агенција се пресметува на следниот начин: 10 * 28 *20+30 * 1.3=5639. Вкупната добивка е 15174 + 5361 = 20535 евра.)
  26.  
  27. Sample input
  28. 2
  29. 1
  30. Krf
  31. 0
  32. 6
  33. 10
  34. 20
  35. 30
  36. Praga
  37. 0
  38. 12
  39. 5
  40. 30
  41. 20
  42. Fibula
  43. Antalija
  44. 1
  45. 7
  46. 14
  47. 40
  48. 30
  49. Atlantis
  50.  
  51. Sample output
  52. 9086
  53. 16854
  54.  
  55. //CODE//
  56.  
  57.  
  58.  
  59. #include<iostream>
  60. #include<cstring>
  61. using namespace std;
  62.  
  63. class Ekskurzija
  64. {
  65. private:
  66.     char ime[50];
  67.     int prevoznoSredstvo;
  68.     int mesec;
  69.     int denovi;
  70.     double cena;
  71.     int brPatnici;
  72. public:
  73.     Ekskurzija(const char *ime = " ", int prevoznoSredstvo = 0,int mesec = 0, int denovi = 0, double cena = 0,int brPatnici = 0)
  74.     {
  75.         strcpy(this -> ime, ime);
  76.         this -> prevoznoSredstvo = prevoznoSredstvo;
  77.         this -> mesec = mesec;
  78.         this -> denovi = denovi;
  79.         this -> cena = cena;
  80.         this -> brPatnici = brPatnici;
  81.     }
  82.  
  83.     int getMesec(){ return this -> mesec;}
  84.     int getDenovi(){return this -> denovi;}
  85.     double getCena(){return this -> cena;}
  86.     int getprevoznoSredstvo(){return this -> prevoznoSredstvo;}
  87.     int getbrPatnici(){return this -> brPatnici;}
  88.  
  89. };
  90. class TuristichkaAgencija
  91. {
  92. protected:
  93.     char ime[50];
  94.     Ekskurzija e[5];
  95.     int n;
  96. public:
  97.     TuristichkaAgencija(const char *ime = " ",Ekskurzija *e = 0, int n = 0)
  98.     {
  99.         strcpy(this -> ime, ime);
  100.         for(int i = 0; i < n; i++)
  101.         {
  102.             this -> e[i] = e[i];
  103.         }
  104.         this -> n = n;
  105.     }
  106.    
  107. };
  108.  
  109. class OnlineTuristichkaAgencija : public TuristichkaAgencija
  110. {
  111.    
  112. public:
  113.     OnlineTuristichkaAgencija(const char *ime = " ",Ekskurzija *e = 0, int n = 0):TuristichkaAgencija(ime, e, n){}
  114.     double vkupnaDobivka()
  115.     {
  116.         float suma = 0.0;
  117.         for(int i = 0; i < n; i++)
  118.         {
  119.             if(e[i].getMesec() > 5&& e[i].getMesec() < 9)
  120.                 {
  121.             suma += e[i].getDenovi() * e[i].getCena() * e[i].getbrPatnici() + 20 * 2.5;}
  122.             else
  123.             {
  124.                 if(e[i].getprevoznoSredstvo())
  125.                    
  126.             suma += e[i].getDenovi() * e[i].getCena() * e[i].getbrPatnici() + 20 * 2.2;
  127.                 else
  128.                    
  129.             suma += e[i].getDenovi() * e[i].getCena() * e[i].getbrPatnici() + 20 * 1.8;
  130.             }
  131.  
  132.         }
  133.         return suma;
  134.     }
  135.  
  136.  
  137. };
  138.  
  139. class TradicionalnaTuristichkaAgencija : public TuristichkaAgencija
  140. {
  141. public:
  142.     TradicionalnaTuristichkaAgencija(const char *ime = " ",Ekskurzija e[5] = 0, int n = 0):TuristichkaAgencija(ime, e, n){}
  143.     double vkupnaDobivka()
  144.     {
  145.         float suma = 0.0;
  146.         for(int i = 0; i < n; i++)
  147.         {
  148.             if(e[i].getMesec() >= 6 && e[i].getMesec() <= 8)
  149.                 {suma += e[i].getDenovi() * e[i].getCena() * e[i].getbrPatnici() + 30 * 1.8;}
  150.             else
  151.             {
  152.                suma += e[i].getDenovi() * e[i].getCena()* e[i].getbrPatnici() + 30 * 1.3;
  153.             }
  154.  
  155.            
  156.         }
  157.         return suma;
  158.     }
  159.  
  160. };
  161.  
  162. int main()
  163. {
  164.  
  165.     char agency[50];
  166.     double freq;
  167.     int numOnlineE, numTradE;
  168.     Ekskurzija online[5];
  169.     Ekskurzija traditional[5];
  170.     cin >> numOnlineE >> numTradE;
  171.     for(int i = 0; i < numOnlineE; i++)
  172.     {
  173.         char name[50];
  174.         int vehicle, month, duration, price, tourists;
  175.         cin >> name >> vehicle >> month >> duration >> price >> tourists;
  176.         Ekskurzija e(name, vehicle, month, duration, price, tourists);
  177.         online[i] = e;
  178.     }
  179.     cin >> agency;
  180.     OnlineTuristichkaAgencija onlineAgency(agency, online, numOnlineE);
  181.     for(int i = 0; i < numTradE; i++)
  182.     {
  183.         char name[50];
  184.         int vehicle, month, duration, price, tourists;
  185.         cin >> name >> vehicle >> month >> duration >> price >> tourists;
  186.         Ekskurzija e(name, vehicle, month, duration, price, tourists);
  187.         traditional[i] = e;
  188.     }
  189.     cin >> agency;
  190.     TradicionalnaTuristichkaAgencija traditionalAgency(agency, traditional, numTradE);
  191.     cout << onlineAgency.vkupnaDobivka() << endl;
  192.     cout << traditionalAgency.vkupnaDobivka() << endl;
  193.  
  194.     return 0;
  195. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement