Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Саксиско Цвеќе Problem 1 (0 / 0)
- Да се имплементира апстрактна класа за репрезентација на саксиско цвеќе. За секое саксиско цвеќе се чуваат податоци за неговото име (низа од знаци), основна цена (цел број) и фамилија на која припаѓа (низа од знаци).
- Од класата SaksiskoCvekje да се изведат класите BezCvet и SoCvet. За секое цвеќе со цвет се чува колку расцветани цветови има (цел број), а за цвеќето без цвет се чува податок за тоа колку дена е старо (цел број). (5 поени)
- За секој објект од двете изведени класи треба да бидат на располагање следниве методи:
- конструктор со аргументи што одговараат на податочните членови и set и get методи за податочните членови (5 поени)
- метод presmetajCena, за пресметување на цената на цвеќето на следниот начин:
- За BezCvet - основната цена се зголемува за 20 ако не е постаро од 10дена, а за 10 ако не е постаро од 35 дена.
- За SoCvet - основната цена се зголемува за бројот на расцветани цветови (10 поени)
- преоптоварен оператор == за споредба на две саксиски цвеќиња. Две цвеќиња се исти ако се од иста фамлија. (5 поени)
- Да се имплементира функција pecatiMaxCena што на влез прима низа од саксиски цвеќиња, бројот на елементите од низата и едно саксиско цвеќе C. Функцијата го печати името, фамилија и цена на најскапото цвеќе од цвеќињата од низата кои се од иста фамилија со цвеќето C (погледни го повикот на функцијата) (10 поени)
- Комплетна функционалност на кодот (5 поени)
- Sample input
- 2
- 1 Ferocactus 100 cactus 7
- 2 Melocactus 120 cactus 120
- Sample output
- Melocactus cactus 240
- //CODE//
- #include<iostream>
- #include<cstring>
- using namespace std;
- class SaksiskoCveke{
- char ime[10];
- int cena;
- char familija[10];
- public:
- SaksiskoCveke(const char *ime = " ", int cena = 0, const char *familija = " "){
- strcpy(this -> ime, ime);
- strcpy(this -> familija, familija);
- this -> cena = cena;
- }
- void setIme(char *ime){strcpy(this -> ime, ime);}
- void setFamililja(char *familija){strcpy(this -> familija, familija);}
- void setCena(int cena){this -> cena = cena;}
- int getCena(){return this -> cena;}
- char *getIme(){return this -> ime;}
- char *getFamilija(){return this -> familija;}
- virtual float presmetajCena() = 0;
- };
- class SoCvet : public SaksiskoCveke{
- int cvetovi;
- public:
- SoCvet(const char *ime = " ", int cena = 0, const char *familija = " ", int cvetovi = 0) : SaksiskoCveke(ime, cena, familija){
- this -> cvetovi = cvetovi;}
- float presmetajCena(){
- return cvetovi + getCena();
- }
- };
- class BezCvet : public SaksiskoCveke{
- int denovi;
- public:
- BezCvet(const char *ime = " ", int cena = 0, const char *familija = " ", int denovi = 0) : SaksiskoCveke(ime, cena, familija){
- this -> denovi = denovi;}
- float presmetajCena(){
- if(denovi < 10){
- return getCena() + 20;}
- else if(denovi < 35){
- return getCena() + 10;}
- else return getCena();
- }
- };
- bool operator==(SaksiskoCveke *c1, SaksiskoCveke &c2){
- return (strcmp(c1 -> getFamilija(), c2.getFamilija()) == 0);
- void pecatiMaxCena(SaksiskoCveke **s, int n, BezCvet &C) {
- SaksiskoCveke *max = s[0];
- for(int i = 0; i < n; i++) {
- if(strcmp(s[i]->getFamilija(), C.getFamilija())==0) {
- if(s[i]->getCena() > max->getCena())
- max = s[i];
- }
- }
- cout<< max->getIme();
- cout<<" "<<max->getFamilija();
- cout<<" "<<max->presmetajCena();
- }
- int main(){
- char ime[10],familija[10];
- int tip,starost,broj,cena;
- int n;
- cin>>n;
- SaksiskoCveke **cvekinja;
- cvekinja=new SaksiskoCveke*[n];
- for (int i=0;i<n;i++){
- cin>>tip>>ime>>cena>>familija;
- if (tip==1) {
- cin>>starost;
- cvekinja[i]=new BezCvet(ime,cena,familija,starost);
- }
- else {
- cin>>broj;
- cvekinja[i]=new SoCvet(ime,cena,familija,broj);
- }
- }
- BezCvet nov("opuntia",90,"cactus",10);
- pecatiMaxCena(cvekinja,n,nov);
- for (int i=0;i<n;i++) delete cvekinja[i];
- delete [] cvekinja;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement