Advertisement
brsjak

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

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