Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Вештачко цвеќе Problem 1 (2 / 2)
- Да се имплементира апстрактна класа за репрезентација на вештачко цвеќе. За секое вечтачко цвеќе се чуваат податоци за неговото име (низа од знаци), основна цена (цел број) и боја која преовладува на цвеќето (низа од знаци).
- Од класата VestackoCveke да се изведат класите SoSaksija и BezSaksija. За секое цвеќе кое е во саксија се чува колку е неговата маса (децимален број), а за цвеќето без саксија се чува инфомрација дали има цветови (булова променлива). (5 поени)
- За секој објект од двете изведени класи треба да бидат на располагање следниве методи:
- конструктор со аргументи што одговараат на податочните членови и set и get методи за податочните членови (5 поени)
- метод vratiCena, за пресметување на цената на цвеќето на следниот начин:
- За SoSaksija - основната цена се зголемува за 30% од вредноса на неговата маса.
- За BezSaksija - основната цена се зголемува за 50 ако цвеќето има цветови (10 поени)
- преоптоварен оператор ! = за споредба на две вештачки цвеќиња. Две цвеќиња се различни ако имаат различна боја која преовладува. (5 поени)
- Да се имплементира функција pecatiMinCena што на влез прима низа од вештачки цвеќиња, бројот на елементите од низата и едно вештачко цвеќе V. Функцијата го печати името, бојата и цена на најевтиното цвеќе од цвеќињата од низата кои се со различна боја со цвеќето V (погледни го повикот на функцијата) (10 поени)
- Комплетна функционалност на кодот (5 поени)
- Sample input
- 2
- 1 kaktus 124 zelen 20.5
- 2 kala 234 belo 1
- Sample output
- kaktus zelen 130.15*/
- #include <iostream>
- #include <string.h>
- using namespace std;
- class VestackoCveke{
- protected:
- char ime[50];
- int cena;
- char boja[50];
- public:
- VestackoCveke(){}
- VestackoCveke(char ime[], int cena, char boja[]){
- strcpy(this->ime,ime);
- this->cena=cena;
- strcpy(this->boja,boja);
- }
- void setIme(char ime[]){
- strcpy(this->ime,ime);
- }
- void setCena(int cena){
- this->cena=cena;
- }
- void setBoja(char boja[]){
- strcpy(this->boja,boja);
- }
- char* getIme(){
- return ime;
- }
- int getCena(){
- return cena;
- }
- char* getBoja(){
- return boja;
- }
- virtual float vratiCena()=0;
- bool operator!=(VestackoCveke &vc){
- return strcmp(boja,vc.boja)!=0;
- }
- ~VestackoCveke(){}
- };
- class SoSaksija:public VestackoCveke{
- private:
- float masa;
- public:
- SoSaksija(){}
- SoSaksija(char ime[], int cena, char boja[],float masa):VestackoCveke(ime,cena,boja){
- this->masa=masa;
- }
- void setMasa(float masa){
- this->masa=masa;
- }
- float getMasa(){
- return masa;
- }
- float vratiCena(){
- return (float)cena+(masa*0.3);
- }
- ~SoSaksija(){}
- };
- class BezSaksija:public VestackoCveke{
- private:
- bool cvet;
- public:
- BezSaksija(){}
- BezSaksija(char ime[], int cena, char boja[],bool cvet):VestackoCveke(ime,cena,boja){
- this->cvet=cvet;
- }
- void setCvet(bool cvet){
- this->cvet=cvet;
- }
- bool getCvet(){
- return cvet;
- }
- float vratiCena(){
- if(cvet) return cena+50;
- return cena;
- }
- ~BezSaksija(){}
- };
- void pecatiMinCena(VestackoCveke **cvekinja,int n,SoSaksija &novo){
- int min=9999;
- int index;
- for(int i=0;i<n;i++){
- if(*cvekinja[i]!=novo){
- int c=cvekinja[i]->vratiCena();
- if(c<min){
- min=c;
- index=i;
- }
- }
- }
- cout<<cvekinja[index]->getIme()<<" "<<cvekinja[index]->getBoja()<<" "<<cvekinja[index]->vratiCena()<<endl;
- }
- int main(){
- char ime[20],boja[10];
- int tip,cena;
- float masa;
- bool cvet;
- int n;
- cin>>n;
- VestackoCveke **cvekinja;
- cvekinja=new VestackoCveke *[n];
- for (int i=0;i<n;i++){
- cin>>tip>>ime>>cena>>boja;
- if (tip==1) {
- cin>>masa;
- cvekinja[i]=new SoSaksija(ime,cena,boja,masa);
- }
- else {
- cin>>cvet;
- cvekinja[i]=new BezSaksija(ime,cena,boja,cvet);
- }
- }
- SoSaksija novo("ljubicici",45,"crvena",10.5);
- pecatiMinCena(cvekinja,n,novo);
- for (int i=0;i<n;i++) delete cvekinja[i];
- delete [] cvekinja;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement