Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Да се имплементира апстрактна класа за репрезентација на саксиско цвеќе. За секое саксиско цвеќе се чуваат податоци за неговото име (низа од знаци), основна цена (цел број) и фамилија на која припаѓа (низа од знаци).
- Од класата SaksiskoCvekje да се изведат класите BezCvet и SoCvet. За секое цвеќе со цвет се чува колку расцветани цветови има (цел број), а за цвеќето без цвет се чува податок за тоа колку дена е старо (цел број). (5 поени)
- За секој објект од двете изведени класи треба да бидат на располагање следниве методи:
- конструктор со аргументи што одговараат на податочните членови и set и get методи за податочните членови (5 поени)
- метод presmetajCena, за пресметување на цената на цвеќето на следниот начин:
- За BezCvet - основната цена се зголемува за 20 ако не е постаро од 10дена, а за 10 ако не е постаро од 35 дена.
- За SoCvet - основната цена се зголемува за бројот на расцветани цветови (10 поени)
- преоптоварен оператор == за споредба на две саксиски цвеќиња. Две цвеќиња се исти ако се од иста фамлија. (5 поени)
- Да се имплементира функција pecatiMaxCena што на влез прима низа од саксиски цвеќиња, бројот на елементите од низата и едно саксиско цвеќе C. Функцијата го печати името, фамилија и цена на најскапото цвеќе од цвеќињата од низата кои се од иста фамилија со цвеќето C (погледни го повикот на функцијата) (10 поени)
- Комплетна функционалност на кодот (5 поени)*/
- #include <iostream>
- #include<cstring>
- using namespace std;
- class SaksiskoCveke
- {
- protected:
- char *ime;
- int osnovnaCena;
- char *familija;
- public:
- SaksiskoCveke(char *ime="", int osnovnaCena=0, char *familija="")
- {
- this->ime=new char[strlen(ime)+1];
- strcpy(this->ime, ime);
- this->osnovnaCena=osnovnaCena;
- this->familija=new char[strlen(familija)+1];
- strcpy(this->familija,familija);
- }
- char *getFamilija()
- {
- return this->familija;
- }
- char *getIme()
- {
- return this->ime;
- }
- virtual int presmetajCena()=0;
- };
- class SoCvet: public SaksiskoCveke
- {
- private:
- int rascvetani;
- public:
- SoCvet(char *ime="", int osnovnaCena=0, char *familija="", int rascvetani=0):SaksiskoCveke(ime,osnovnaCena,familija)
- {
- this->rascvetani=rascvetani;
- }
- int presmetajCena()
- {
- return osnovnaCena + rascvetani;
- }
- };
- class BezCvet: public SaksiskoCveke
- {
- private:
- int starost;
- public:
- BezCvet(char *ime="", int osnovnaCena=0, char *familija="",int starost=0):SaksiskoCveke(ime,osnovnaCena,familija)
- {
- this->starost=starost;
- }
- int presmetajCena()
- {
- int t;
- if(this->starost < 10) t=20;
- else if(this->starost < 35) t=10;
- return osnovnaCena + t;
- }
- };
- bool operator==(SaksiskoCveke *c1, SaksiskoCveke &c2)
- {
- if(strcmp(c1->getFamilija(),c2.getFamilija())==0)
- return true;
- return false;
- }
- void pecatiMaxCena(SaksiskoCveke **cvekinja, int n, SaksiskoCveke &s)
- {
- int maxi=0;
- int maxIndex;
- for(int i=0; i<n; i++)
- {
- if((cvekinja[i]==s) && (cvekinja[i]->presmetajCena() > maxi))
- {
- maxi=cvekinja[i]->presmetajCena();
- maxIndex=i;
- }
- }
- cout<<cvekinja[maxIndex]->getIme()<<" "<<cvekinja[maxIndex]->getFamilija()<<" "<<cvekinja[maxIndex]->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