Advertisement
SlavkovB

Влезници OOP Exercises

Jun 5th, 2016
524
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.94 KB | None | 0 0
  1. Влезници Problem 16 (0 / 0)
  2. Да се дефинира класа Vleznica, во коjа се чуваат информации за:
  3.  
  4. спортскиот натпревар на кој се однесува влезницата (низа од максимум 50 знаци),
  5. основна цена на влезницата (децимален број).
  6. Од оваа класа да се изведат две нови класи VleznicaSedenje и VleznicaStoenje. За класата VleznicaSedenje дополнително се чува блокот (цел број) и редот (цел број). За класата VleznicaStoenje дополнително се чува податок за трибината (S - јужна, N - северна, E - источна, W - западна) (10 поени).
  7.  
  8. За секоjа од класите да се напишат потребните коструктори, set и get методи (10 поени).
  9.  
  10. Да се обезбеди функција float cena() за пресметување на продажната цена на влезниците на следниот начин (15 поени):
  11.  
  12. За влезница за седење, цената се зголемува за 40% од основната цена, ако влезницата е за седиште што се наоѓа под осми ред, односно, за 20% од основната цена, ако седиштето се наоѓа меѓу осми и петнаесетти ред. Во сите други случаи продажната цена на влезницата е еднаква на основната цена.
  13. За влезница за стоење, цената се зголемува за 30% од основната цена, ако влезницата е за јужната трибина. Во сите други случаи продажната цена на влезницата е еднаква на основната цена.
  14. Да се напише функциjа najmalaCena, што како аргумент прима низа од покажувачи кон влезници и нивниот број и го печати натпреварот и цената на влезницата со најмала продажна цена. (15 поени)
  15. Sample input
  16. 5
  17. GameA
  18. 100
  19. S
  20. GameB
  21. 100
  22. 1 10
  23. GameC
  24. 200
  25. N
  26. GameD
  27. 100
  28. 2 7
  29. GameE
  30. 200
  31. N
  32.  
  33. Sample output
  34. GameB
  35. 120
  36.  
  37. //CODE//
  38.  
  39.  
  40. #include <iostream>
  41. #include <cstring>
  42. using namespace std;
  43.  
  44. class Vleznica{
  45. protected:
  46.     char ime[50];
  47.     float osnovnaCena;
  48. public:
  49.     Vleznica(const char *ime = " ", float osnovnaCena = 0.0){
  50.     strcpy(this -> ime, ime);
  51.     this -> osnovnaCena = osnovnaCena;
  52.     }
  53.     virtual float cena() = 0;
  54.     virtual ~Vleznica(){}
  55.     float getCena(){return this -> osnovnaCena;}
  56.     char *getIme(){return this -> ime;}
  57.     void setCena(float cena){osnovnaCena = cena;}
  58.     void setIme(char *ime){strcpy(this -> ime, ime);}
  59. };
  60.  
  61. class VleznicaSedenje: public Vleznica{
  62. private:
  63.      int blok, red;
  64. public:
  65.     VleznicaSedenje(const char *ime = " ", float osnovnaCena = 0.0, int blok = 0, int red = 0):Vleznica(ime,osnovnaCena){
  66.         this -> blok = blok;
  67.         this -> red = red;}
  68.    
  69.     int getBlok(){return this -> blok;}
  70.     int getRed(){return this -> red;}
  71.    
  72.     void setBlok(int b){blok = b;}
  73.     void setRed(int r){red = r;}
  74.    
  75.     float cena(){
  76.         if(red < 8) return this-> osnovnaCena + (osnovnaCena * 0.4);
  77.         else if(red >= 8&&red <= 15) return this -> osnovnaCena + (osnovnaCena * 0.2);
  78.             else return osnovnaCena;}
  79. };
  80.  
  81. class VleznicaStoenje: public Vleznica{
  82.  
  83. public:
  84.     char tribina;
  85.     VleznicaStoenje(){}
  86. VleznicaStoenje(const char *ime, float osnovnaCena, char tribina):Vleznica(ime,osnovnaCena){
  87.     this -> tribina = tribina;}
  88. float cena(){
  89.     if(this -> tribina == 'S')
  90.             return osnovnaCena + (osnovnaCena * 0.3);
  91.         return osnovnaCena;}
  92.     void setTribina(char t){tribina = t;}
  93.     char getTribina(){return this -> tribina;}
  94. };
  95.  
  96. void najmalaCena(Vleznica **vleznici, int n){
  97.     int tmp = 0;
  98.     float min = vleznici[0] -> cena();
  99.     for(int i = 0 ; i < n; i++){
  100.         if (vleznici[i] -> cena() < min){
  101.     min = vleznici[i] -> cena();
  102.             tmp = i;}
  103.     }
  104.    
  105.     cout<<vleznici[tmp] -> getIme() << endl;
  106.     cout<<vleznici[tmp] -> cena() << endl;
  107. }
  108.  
  109.     int main() {
  110.     int n;
  111.     cin >> n;
  112.     Vleznica** vleznici = new Vleznica*[n];
  113.     for(int i = 0; i < n; ++i) {   
  114.         char ime[30];
  115.         float osnovnaCena;
  116.         cin >> ime >> osnovnaCena;
  117.         if(i % 2) {
  118.             int blok, red;
  119.             cin >> blok >> red;
  120.             vleznici[i] = new VleznicaSedenje(ime, osnovnaCena, blok, red);
  121.         } else {
  122.             char tribina;
  123.             cin >> tribina;
  124.             vleznici[i] = new VleznicaStoenje(ime, osnovnaCena, tribina);
  125.         }
  126.     }
  127.  
  128.     najmalaCena(vleznici, n);
  129.  
  130.     for(int i = 0; i < n; ++i) {
  131.         delete vleznici[i];
  132.     }
  133.     delete [] vleznici;
  134.     return 0;
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement