Advertisement
evitanasevska

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

Jun 15th, 2016
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.30 KB | None | 0 0
  1. /*Вештачко цвеќе Problem 1 (2 / 2)
  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. #include <iostream>
  30. #include <string.h>
  31. using namespace std;
  32.  
  33. class VestackoCveke{
  34. protected:
  35.     char ime[50];
  36.     int cena;
  37.     char boja[50];
  38. public:
  39.     VestackoCveke(){}
  40.     VestackoCveke(char ime[], int cena, char boja[]){
  41.         strcpy(this->ime,ime);
  42.         this->cena=cena;
  43.         strcpy(this->boja,boja);
  44.     }
  45.     void setIme(char ime[]){
  46.         strcpy(this->ime,ime);
  47.     }
  48.     void setCena(int cena){
  49.         this->cena=cena;
  50.     }
  51.     void setBoja(char boja[]){
  52.         strcpy(this->boja,boja);
  53.     }
  54.     char* getIme(){
  55.         return ime;
  56.     }
  57.     int getCena(){
  58.         return cena;
  59.     }
  60.     char* getBoja(){
  61.         return boja;
  62.     }
  63.     virtual float vratiCena()=0;
  64.     bool operator!=(VestackoCveke &vc){
  65.         return strcmp(boja,vc.boja)!=0;
  66.     }
  67.    
  68.     ~VestackoCveke(){}
  69. };
  70.  
  71. class SoSaksija:public VestackoCveke{
  72. private:
  73.     float masa;
  74. public:
  75.     SoSaksija(){}
  76.     SoSaksija(char ime[], int cena, char boja[],float masa):VestackoCveke(ime,cena,boja){
  77.         this->masa=masa;
  78.     }
  79.    
  80.     void setMasa(float masa){
  81.         this->masa=masa;
  82.     }
  83.     float getMasa(){
  84.         return masa;
  85.     }
  86.    
  87.     float vratiCena(){
  88.         return (float)cena+(masa*0.3);
  89.     }
  90.    
  91.    
  92.    
  93.     ~SoSaksija(){}
  94. };
  95.  
  96. class BezSaksija:public VestackoCveke{
  97. private:
  98.     bool cvet;
  99. public:
  100.     BezSaksija(){}
  101.     BezSaksija(char ime[], int cena, char boja[],bool cvet):VestackoCveke(ime,cena,boja){
  102.         this->cvet=cvet;
  103.     }
  104.    
  105.     void setCvet(bool cvet){
  106.         this->cvet=cvet;
  107.     }
  108.     bool getCvet(){
  109.         return cvet;
  110.     }
  111.    
  112.     float vratiCena(){
  113.         if(cvet) return cena+50;
  114.         return cena;
  115.     }
  116.    
  117.      
  118.    
  119.     ~BezSaksija(){}
  120. };
  121.  
  122. void pecatiMinCena(VestackoCveke **cvekinja,int n,SoSaksija &novo){
  123.    int min=9999;
  124.     int index;
  125.     for(int i=0;i<n;i++){
  126.         if(*cvekinja[i]!=novo){
  127.             int c=cvekinja[i]->vratiCena();
  128.             if(c<min){
  129.                 min=c;
  130.                 index=i;
  131.             }
  132.         }
  133.     }
  134.    cout<<cvekinja[index]->getIme()<<" "<<cvekinja[index]->getBoja()<<" "<<cvekinja[index]->vratiCena()<<endl;
  135. }
  136.  
  137. int main(){
  138.  
  139. char ime[20],boja[10];
  140. int tip,cena;
  141. float masa;
  142. bool cvet;
  143. int n;
  144. cin>>n;
  145. VestackoCveke  **cvekinja;
  146. cvekinja=new VestackoCveke *[n];
  147.  
  148. for (int i=0;i<n;i++){
  149.  
  150.     cin>>tip>>ime>>cena>>boja;
  151.     if (tip==1) {
  152.         cin>>masa;
  153.         cvekinja[i]=new SoSaksija(ime,cena,boja,masa);
  154.  
  155.     }
  156.     else {
  157.         cin>>cvet;
  158.         cvekinja[i]=new BezSaksija(ime,cena,boja,cvet);
  159.     }
  160.  
  161.  
  162. }
  163.  
  164. SoSaksija novo("ljubicici",45,"crvena",10.5);
  165. pecatiMinCena(cvekinja,n,novo);
  166.  
  167. for (int i=0;i<n;i++) delete cvekinja[i];
  168. delete [] cvekinja;
  169. return 0;
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement