SlavkovB

Вештачко цвеќе OOP Exercises

Jun 10th, 2016
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.05 KB | None | 0 0
  1. Вештачко цвеќе Problem 1 (0 / 0)
  2. Да се имплементира апстрактна класа за репрезентација на вештачко цвеќе. За секое вечтачко цвеќе се чуваат податоци за неговото име (низа од знаци), основна цена (цел број) и боја која преовладува на цвеќето (низа од знаци).
  3.  
  4. Од класата VestackoCveke да се изведат класите SoSaksija и BezSaksija. За секое цвеќе кое е во саксија се чува колку е неговата маса (децимален број), а за цвеќето без саксија се чува инфомрација дали има цветови (булова променлива). (5 поени)
  5.  
  6. За секој објект од двете изведени класи треба да бидат на располагање следниве методи:
  7.  
  8. конструктор со аргументи што одговараат на податочните членови и set и get методи за податочните членови (5 поени)
  9. метод vratiCena, за пресметување на цената на цвеќето на следниот начин:
  10.  
  11. За SoSaksija - основната цена се зголемува за 30% од вредноса на неговата маса.
  12.  
  13. За BezSaksija - основната цена се зголемува за 50 ако цвеќето има цветови (10 поени)
  14.  
  15. преоптоварен оператор ! = за споредба на две вештачки цвеќиња. Две цвеќиња се различни ако имаат различна боја која преовладува. (5 поени)
  16.  
  17. Да се имплементира функција pecatiMinCena што на влез прима низа од вештачки цвеќиња, бројот на елементите од низата и едно вештачко цвеќе V. Функцијата го печати името, бојата и цена на најевтиното цвеќе од цвеќињата од низата кои се со различна боја со цвеќето V (погледни го повикот на функцијата) (10 поени)
  18.  
  19. Комплетна функционалност на кодот (5 поени)
  20.  
  21. Sample input
  22. 2
  23. 1 kaktus 124 zelen 20.5
  24. 2 kala 234 belo 1
  25.  
  26. Sample output
  27. kaktus zelen 130.15
  28.  
  29.  
  30. //CODE//
  31.  
  32.  
  33. #include<iostream>
  34. #include<cstring>
  35. using namespace std;
  36.  
  37. class VestackoCveke{
  38.     char ime[20];
  39.     int cena;  
  40.     char boja[10];
  41. public:
  42.     VestackoCveke(const char *ime = " ", int cena = 0, const char *boja = " "){
  43.     strcpy(this -> ime, ime);
  44.     strcpy(this -> boja, boja);
  45.     this -> cena = cena;
  46.     }
  47.    
  48.     void setIme(char *ime){strcpy(this -> ime, ime);}
  49.     void setBoja(char *boja){strcpy(this -> boja, boja);}
  50.     void setCena(int cena){this -> cena = cena;}
  51.    
  52.     char *getIme(){return this -> ime;}
  53.     char *getBoja(){return this -> boja;}
  54.     int  getCena(){return this -> cena;}
  55.     virtual float vratiCena() = 0;
  56.     virtual ~VestackoCveke(){}
  57. };
  58.  
  59. class SoSaksija : public VestackoCveke{
  60.     float masa;
  61. public:
  62.     SoSaksija(const char *ime = " ", int cena = 0, const char *boja = " ", float masa = 0.0)
  63.         : VestackoCveke(ime, cena, boja){
  64.     this -> masa = masa;}
  65.      float vratiCena(){
  66.   return this -> getCena() + (0.3 * masa);
  67.   }
  68.     };
  69.  
  70. class BezSaksija : public VestackoCveke{
  71.     bool cvet;
  72. public:
  73.     BezSaksija(const char *ime = " ", int cena = 0, const char *boja = " ", bool cvet = false)
  74.         : VestackoCveke(ime, cena, boja){
  75.     this -> cvet = cvet;
  76.     }
  77.     float vratiCena(){
  78.         if (cvet)
  79.             return this -> getCena() + 50;
  80.                 else
  81.                     return this -> getCena();
  82.     }
  83. };
  84.  
  85.  
  86. bool operator !=(VestackoCveke *c1, VestackoCveke &c2){
  87. return (strcmp(c1 -> getBoja(), c2.getBoja()) != 0);
  88.    
  89. }
  90. void pecatiMinCena(VestackoCveke **cvekinja, int n,SoSaksija &novo) {
  91.     VestackoCveke *min = cvekinja[0];
  92.     for(int i = 0; i < n; i++) {
  93.         if(strcmp(cvekinja[i]->getBoja(), novo.getBoja())!=0)
  94.             if(cvekinja[i]->getCena() < min->getCena())
  95.                 min = cvekinja[i];
  96.     }
  97.     cout << min->getIme();
  98.     cout << " "<<min->getBoja();
  99.     cout<< " "<<min-> vratiCena();
  100. }
  101.  
  102.  
  103. int main(){
  104.  
  105. char ime[20],boja[10];
  106. int tip,cena;
  107. float masa;
  108. bool cvet;
  109. int n;
  110. cin>>n;
  111. VestackoCveke  **cvekinja;
  112. cvekinja=new VestackoCveke *[n];
  113.  
  114. for (int i=0;i<n;i++){
  115.  
  116.     cin>>tip>>ime>>cena>>boja;
  117.     if (tip==1) {
  118.         cin>>masa;
  119.         cvekinja[i]=new SoSaksija(ime,cena,boja,masa);
  120.  
  121.     }
  122.     else {
  123.         cin>>cvet;
  124.         cvekinja[i]=new BezSaksija(ime,cena,boja,cvet);
  125.     }
  126.  
  127.  
  128. }
  129.  
  130. SoSaksija novo("ljubicici",45,"crvena",10.5);
  131. pecatiMinCena(cvekinja,n,novo);
  132.  
  133. for (int i=0;i<n;i++) delete cvekinja[i];
  134. delete [] cvekinja;
  135. return 0;
  136. }
Add Comment
Please, Sign In to add comment