Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cstring>
- #include<typeinfo>
- using namespace std;
- class ImaMasa
- {
- public:
- virtual double vratiMasa()=0;
- virtual void pecati()=0;
- };
- class PaketPijalok
- {
- private:
- double volumenEden;
- int kolicina;
- public:
- static const double gustina=0.8;
- static const double ambalaza=0.2;
- double getVolumen()
- {
- return volumenEden;
- }
- double getGustina()
- {
- return gustina;
- }
- PaketPijalok()
- {
- }
- PaketPijalok(double volumenEden, int kolicina)
- {
- this->volumenEden=volumenEden;
- this->kolicina=kolicina;
- }
- PaketPijalok(const PaketPijalok &p)
- {
- this->volumenEden=p.volumenEden;
- this->kolicina=p.kolicina;
- }
- int getKolicina()
- {
- return kolicina;
- }
- double vratiMasa()
- {
- return (volumenEden * gustina + ambalaza)* getKolicina();
- }
- int sporediMasa(ImaMasa *im)
- {
- return 0;
- }
- void pecati()
- {
- cout<<"Kolicina: "<<getKolicina();
- }
- ~PaketPijalok()
- {
- }
- };
- class PaketSok: public PaketPijalok, public ImaMasa
- {
- private:
- bool daliGaziran;
- public:
- PaketSok()
- {
- }
- ~PaketSok()
- {
- }
- PaketSok(double volumenEden, int kolicina, bool daliGaziran):PaketPijalok(volumenEden,kolicina)
- {
- this->daliGaziran=daliGaziran;
- }
- void setDaliGazirn(bool daliGaziran)
- {
- this->daliGaziran=daliGaziran;
- }
- bool getDaliGaziran()
- {
- return daliGaziran;
- }
- void pecati()
- {
- cout<<"Paket sok "<<endl;
- PaketPijalok::pecati();
- cout<<", so po "<<getVolumen()*getGustina()<<" l(dm3)"<<endl;
- }
- double vratiMasa()
- {
- if(daliGaziran)
- {
- return PaketPijalok::vratiMasa();
- }
- else return PaketPijalok::vratiMasa()+ 0.1*PaketPijalok::getKolicina();
- }
- };
- class PaketVino: public PaketPijalok, public ImaMasa
- {
- private:
- double procentAlkohol;
- public:
- PaketVino()
- {
- }
- ~PaketVino()
- {
- }
- PaketVino(double volumenEden, int kolicina, double procentAlkohol):PaketPijalok(volumenEden,kolicina)
- {
- try{
- if(!(procentAlkohol>0 && procentAlkohol<1)) throw 1;
- this->procentAlkohol=procentAlkohol;
- }
- catch (int){
- cout<<"Pogresno vnesena registracija!"<<endl;
- procentAlkohol=0;
- }
- }
- double getProcentAlkohol()
- {
- return procentAlkohol;
- }
- void pecati()
- {
- cout<<"Paket vino "<<endl;
- PaketPijalok::pecati();
- cout<<","<<this->procentAlkohol*100<<"% alkohol od po "<<getVolumen()*getGustina()<<" l(dm3)"<<endl;
- }
- double vratiMasa()
- {
- return PaketPijalok::vratiMasa()*(0.9+procentAlkohol);
- }
- };
- class Kamion
- {
- private:
- char reg[9];
- char vozac[20];
- ImaMasa **niza;
- int br;
- public:
- Kamion(const char* regi="", const char* voz="")
- {
- if(!(isalpha(regi[0])&&isalpha(regi[1]) && isalpha(regi[6]) && isalpha(regi[7]))) throw 1;
- strcpy(reg, regi);
- strcpy(vozac, voz);
- br=0;
- niza = new ImaMasa*[0];
- }
- void setRegistracija(char* r){
- strcpy(reg, r);
- }
- void setVozac(char* v){
- strcpy(vozac, v);
- }
- void setBr(int b){
- br = b;
- }
- void dodadiElement(ImaMasa *nov)
- {
- ImaMasa **tmpNiza = new ImaMasa*[br+1];
- for(int i=0; i<br; i++){
- tmpNiza[i]=this->niza[i];
- }
- tmpNiza[br]=nov;
- br++;
- niza=tmpNiza;
- }
- float vratiVkupnaMasa()
- {
- float vkupno = 0;
- for(int i = 0; i < br; i++)
- {
- vkupno += niza[i]->vratiMasa();
- }
- return vkupno;
- }
- void pecati()
- {
- cout<<"Kamion so registracija "<<reg<<" i vozac "<<vozac<<" prenesuva: "<<endl;
- for(int i = 0; i < br; i++)
- {
- niza[i]->pecati();
- }
- }
- Kamion pretovar(char* r, char* v)
- {
- Kamion k = (*this);
- k.setRegistracija(r);
- k.setVozac(v);
- double max=niza[0]->vratiMasa();
- int ind=0;
- for(int i=1; i<br; i++){
- if(niza[i]->vratiMasa() > max){
- max = niza[i]->vratiMasa();
- ind = i;
- }
- }
- for(int i=ind; i<br-1; i++){
- niza[i]=niza[i+1];
- }
- k.setBr(br-1);
- return k;
- }
- };
- int main()
- {
- char ime[20], reg[9];
- double vol;
- int kol;
- bool g;
- double proc;
- try
- {
- cin>>reg;
- cin>>ime;
- Kamion A(reg, ime);
- ImaMasa **d = new ImaMasa*[5];
- cin>>vol>>kol;
- cin>>g;
- d[0] = new PaketSok(vol, kol, g);
- cin>>vol>>kol;
- cin>>proc;
- d[1] = new PaketVino(vol, kol, proc);
- cin>>vol>>kol;
- cin>>proc;
- d[2] = new PaketVino(vol, kol, proc);
- cin>>vol>>kol;
- cin>>g;
- d[3] = new PaketSok(vol, kol, g);
- cin>>vol>>kol;
- cin>>proc;
- d[4] = new PaketVino(vol, kol, proc);
- A.dodadiElement(d[0]);
- A.dodadiElement(d[1]);
- A.dodadiElement(d[2]);
- A.dodadiElement(d[3]);
- A.dodadiElement(d[4]);
- A.pecati();
- cout<<"Vkupna masa: "<<A.vratiVkupnaMasa()<<endl;
- cin>>reg;
- cin>>ime;
- Kamion B = A.pretovar(reg, ime);
- B.pecati();
- cout<<"Vkupna masa: "<<B.vratiVkupnaMasa()<<endl;
- }
- catch(int)
- {
- cout<<"Pogresno vnesena registracija"<<endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement