kristina7

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

Apr 22nd, 2016
676
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.00 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.  
  21. #include <iostream>
  22. #include<cstring>
  23. using namespace std;
  24. class SaksiskoCveke
  25. {
  26. protected:
  27.     char *ime;
  28.     int osnovnaCena;
  29.     char *familija;
  30. public:
  31.     SaksiskoCveke(char *ime="", int osnovnaCena=0, char *familija="")
  32.     {
  33.         this->ime=new char[strlen(ime)+1];
  34.         strcpy(this->ime, ime);
  35.         this->osnovnaCena=osnovnaCena;
  36.         this->familija=new char[strlen(familija)+1];
  37.         strcpy(this->familija,familija);
  38.     }
  39.     char *getFamilija()
  40.     {
  41.         return this->familija;
  42.     }
  43.     char *getIme()
  44.     {
  45.         return this->ime;
  46.     }
  47.     virtual int presmetajCena()=0;
  48.  
  49. };
  50. class SoCvet: public SaksiskoCveke
  51. {
  52. private:
  53.     int rascvetani;
  54. public:
  55.     SoCvet(char *ime="", int osnovnaCena=0, char *familija="", int rascvetani=0):SaksiskoCveke(ime,osnovnaCena,familija)
  56.     {
  57.         this->rascvetani=rascvetani;
  58.     }
  59.     int presmetajCena()
  60.     {
  61.         return osnovnaCena + rascvetani;
  62.     }
  63. };
  64. class BezCvet: public SaksiskoCveke
  65. {
  66. private:
  67.     int starost;
  68. public:
  69.     BezCvet(char *ime="", int osnovnaCena=0, char *familija="",int starost=0):SaksiskoCveke(ime,osnovnaCena,familija)
  70.     {
  71.         this->starost=starost;
  72.     }
  73.     int presmetajCena()
  74.     {
  75.         int t;
  76.         if(this->starost < 10) t=20;
  77.         else if(this->starost < 35) t=10;
  78.         return osnovnaCena + t;
  79.     }
  80. };
  81. bool operator==(SaksiskoCveke *c1, SaksiskoCveke &c2)
  82. {
  83.     if(strcmp(c1->getFamilija(),c2.getFamilija())==0)
  84.         return true;
  85.         return false;
  86. }
  87. void pecatiMaxCena(SaksiskoCveke **cvekinja, int n, SaksiskoCveke &s)
  88. {
  89.     int maxi=0;
  90.     int maxIndex;
  91.     for(int i=0; i<n; i++)
  92.     {
  93.         if((cvekinja[i]==s) && (cvekinja[i]->presmetajCena() > maxi))
  94.         {
  95.             maxi=cvekinja[i]->presmetajCena();
  96.             maxIndex=i;
  97.         }
  98.     }
  99.     cout<<cvekinja[maxIndex]->getIme()<<" "<<cvekinja[maxIndex]->getFamilija()<<" "<<cvekinja[maxIndex]->presmetajCena();
  100. }
  101. int main()
  102. {
  103.     char ime[10],familija[10];
  104.     int tip,starost,broj,cena;
  105.     int n;
  106.     cin>>n;
  107.     SaksiskoCveke **cvekinja;
  108.     cvekinja=new SaksiskoCveke*[n];
  109.  
  110.     for (int i=0; i<n; i++)
  111.     {
  112.  
  113.         cin>>tip>>ime>>cena>>familija;
  114.         if (tip==1)
  115.         {
  116.             cin>>starost;
  117.             cvekinja[i]=new BezCvet(ime,cena,familija,starost);
  118.  
  119.         }
  120.         else
  121.         {
  122.             cin>>broj;
  123.             cvekinja[i]=new SoCvet(ime,cena,familija,broj);
  124.         }
  125.     }
  126.     BezCvet nov("opuntia",90,"cactus",10);
  127.     pecatiMaxCena(cvekinja,n,nov);
  128.  
  129.     for (int i=0; i<n; i++) delete cvekinja[i];
  130.     delete [] cvekinja;
  131.     return 0;
  132. }
Advertisement
Add Comment
Please, Sign In to add comment