Advertisement
SlavkovB

Саксиско Цвеќе OOP Exercises

Jun 10th, 2016
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.03 KB | None | 0 0
  1. Саксиско Цвеќе Problem 1 (0 / 0)
  2. Да се имплементира апстрактна класа за репрезентација на саксиско цвеќе. За секое саксиско цвеќе се чуваат податоци за неговото име (низа од знаци), основна цена (цел број) и фамилија на која припаѓа (низа од знаци).
  3.  
  4. Од класата SaksiskoCvekje да се изведат класите BezCvet и SoCvet. За секое цвеќе со цвет се чува колку расцветани цветови има (цел број), а за цвеќето без цвет се чува податок за тоа колку дена е старо (цел број). (5 поени)
  5.  
  6. За секој објект од двете изведени класи треба да бидат на располагање следниве методи:
  7.  
  8. конструктор со аргументи што одговараат на податочните членови и set и get методи за податочните членови (5 поени)
  9. метод presmetajCena, за пресметување на цената на цвеќето на следниот начин:
  10.  
  11. За BezCvet - основната цена се зголемува за 20 ако не е постаро од 10дена, а за 10 ако не е постаро од 35 дена.
  12.  
  13. За SoCvet - основната цена се зголемува за бројот на расцветани цветови (10 поени)
  14.  
  15. преоптоварен оператор == за споредба на две саксиски цвеќиња. Две цвеќиња се исти ако се од иста фамлија. (5 поени)
  16.  
  17. Да се имплементира функција pecatiMaxCena што на влез прима низа од саксиски цвеќиња, бројот на елементите од низата и едно саксиско цвеќе C. Функцијата го печати името, фамилија и цена на најскапото цвеќе од цвеќињата од низата кои се од иста фамилија со цвеќето C (погледни го повикот на функцијата) (10 поени)
  18.  
  19. Комплетна функционалност на кодот (5 поени)
  20.  
  21. Sample input
  22. 2
  23. 1 Ferocactus 100 cactus 7
  24. 2 Melocactus 120 cactus 120
  25.  
  26. Sample output
  27. Melocactus cactus 240
  28.  
  29. //CODE//
  30.  
  31.  
  32. #include<iostream>
  33. #include<cstring>
  34. using namespace std;
  35.  
  36. class SaksiskoCveke{
  37.     char ime[10];
  38.     int cena;
  39.     char familija[10];
  40. public:
  41.     SaksiskoCveke(const char *ime = " ", int cena = 0, const char *familija = " "){
  42.     strcpy(this -> ime, ime);
  43.     strcpy(this -> familija, familija);
  44.     this -> cena = cena;
  45.     }
  46.    
  47.     void setIme(char *ime){strcpy(this -> ime, ime);}
  48.     void setFamililja(char *familija){strcpy(this -> familija, familija);}
  49.     void setCena(int cena){this -> cena = cena;}
  50.    
  51.     int   getCena(){return this -> cena;}
  52.     char *getIme(){return this -> ime;}
  53.     char *getFamilija(){return this -> familija;}
  54.     virtual float presmetajCena() = 0;
  55. };
  56.  
  57. class SoCvet : public SaksiskoCveke{
  58. int cvetovi;
  59. public:
  60.     SoCvet(const char *ime = " ", int cena = 0, const char *familija = " ", int cvetovi = 0) : SaksiskoCveke(ime, cena, familija){
  61.     this -> cvetovi = cvetovi;}
  62.     float presmetajCena(){
  63.     return cvetovi + getCena();
  64.     }
  65. };
  66.  
  67. class BezCvet : public SaksiskoCveke{
  68.     int denovi;
  69. public:
  70.     BezCvet(const char *ime = " ", int cena = 0, const char *familija = " ", int denovi = 0) : SaksiskoCveke(ime, cena, familija){
  71.     this -> denovi = denovi;}
  72.     float presmetajCena(){
  73.         if(denovi < 10){
  74.             return getCena() + 20;}
  75.         else if(denovi < 35){
  76.             return getCena() + 10;}
  77.             else return getCena();
  78.             }
  79. };
  80.  
  81. bool operator==(SaksiskoCveke *c1, SaksiskoCveke &c2){
  82.     return (strcmp(c1 -> getFamilija(), c2.getFamilija()) == 0);
  83.  
  84. void pecatiMaxCena(SaksiskoCveke **s, int n, BezCvet &C) {
  85.     SaksiskoCveke *max = s[0];
  86.     for(int i = 0; i < n; i++) {
  87.         if(strcmp(s[i]->getFamilija(), C.getFamilija())==0) {
  88.             if(s[i]->getCena() > max->getCena())
  89.                 max = s[i];
  90.         }
  91.     }
  92.     cout<< max->getIme();
  93.     cout<<" "<<max->getFamilija();
  94.     cout<<" "<<max->presmetajCena();
  95. }
  96. int main(){
  97.  
  98. char ime[10],familija[10];
  99. int tip,starost,broj,cena;
  100. int n;
  101. cin>>n;
  102. SaksiskoCveke **cvekinja;
  103. cvekinja=new SaksiskoCveke*[n];
  104.  
  105. for (int i=0;i<n;i++){
  106.  
  107.     cin>>tip>>ime>>cena>>familija;
  108.     if (tip==1) {
  109.         cin>>starost;
  110.         cvekinja[i]=new BezCvet(ime,cena,familija,starost);
  111.  
  112.     }
  113.     else {
  114.         cin>>broj;
  115.         cvekinja[i]=new SoCvet(ime,cena,familija,broj);
  116.     }
  117.  
  118.  
  119. }
  120.  
  121. BezCvet nov("opuntia",90,"cactus",10);
  122. pecatiMaxCena(cvekinja,n,nov);
  123.  
  124. for (int i=0;i<n;i++) delete cvekinja[i];
  125. delete [] cvekinja;
  126. return 0;
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement