Advertisement
brsjak

Saksisko Cvekje

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