offline
- mirkorad993

- Novi MyCity građanin
- Pridružio: 08 Feb 2014
- Poruke: 2
|
Hvala na odgovoru, prepravio sam taj dio i dobro funkcionise.. sad me muci ova cetvrta klasa Racun, nikako da skontam sta je "pisac" htjeo da kaze...
prepravljeno
- #include<iostream>
- #include<vector>
- #include<cstring>
- #include<iomanip>
- using namespace std;
- class Predmet
- {
- friend ostream &operator<<(ostream &,Predmet &);
- public:
- virtual void print(ostream &)=0;
- virtual Predmet* kopija()=0;
- virtual double zapremina()const=0;
- virtual double tezina()const=0;
- };
- /*------------------------------------------Artikal------------------------------------*/
- ostream &operator<<(ostream &out,Predmet &p)
- {
- p.print(out); return out;
- }
-
- class Artikal:public Predmet
- {
- protected:
- int sifra;
- char *naziv;
- double zap,tez,cijena;
- public:
- Artikal(const int=0,const char* ="",const double=0,const double=0,const double=0);
- Artikal(Artikal &);
- Artikal* kopija();
- Artikal &operator=(Artikal &);
- void read();
- void print(ostream &);
- double zapremina()const;
- double tezina()const;
- ~Artikal();
- };
- Artikal* Artikal::kopija()
- {
- return new Artikal(*this);
- }
- Artikal::Artikal(const int s,const char* n,const double z,const double t,const double c)
- {
- sifra=s;
- naziv=new char[strlen(n)+1];
- strcpy(naziv,n);
- zap=z;
- tez=t;
- cijena=c;
- }
- Artikal::~Artikal()
- {
- delete [] naziv;
- }
- double Artikal::tezina()const
- {
- return tez;
- }
- double Artikal::zapremina()const
- {
- return zap;
- }
- void Artikal::print(ostream &out)
- {
- if(sifra<10000) out<<"0";
- if(sifra<1000) out<<"0";
- if(sifra<100) out<<"0";
- if(sifra<10) out<<"0";
- out<<sifra;
- out<<" ";
- if(strlen(naziv)<15) out<<naziv;
- if(strlen(naziv)>=15)
- {
- for(int i=0;i<12;i++)
- out<<naziv[i];
- out<<"...";
- }
- out<<" "<<cijena<<endl;
- }
- void Artikal::read()
- {
- cout<<"Unesi sifru: "; cin>>sifra;
- cout<<"Unesi naziv artikla: "; cin>>naziv;
- cout<<"Unesi zapreminu artikla: "; cin>>zap;
- cout<<"Unesi tezinu artikla: "; cin>>tez;
- cout<<"Unesi cijenu artikla: "; cin>>cijena;
- }
- Artikal &Artikal::operator=(Artikal &a)
- {
- if(this!=&a)
- {
- sifra=a.sifra;
- naziv=new char[strlen(a.naziv)+1];
- strcpy(naziv,a.naziv);
- zap=a.zap;
- tez=a.tez;
- cijena=a.cijena;
- }
- return *this;
- }
- Artikal::Artikal(Artikal &a)
- {
- sifra=a.sifra;
- naziv=new char[strlen(a.naziv)+1];
- strcpy(naziv,a.naziv);
- zap=a.zap;
- tez=a.tez;
- cijena=a.cijena;
- }
- /*------------------------------------------Kutija------------------------------------*/
- class Kutija:public Predmet
- {
-
- protected:
- double tez,u_tez;
- double a,b,c;
- Predmet **niz_p;
- int max;
- int vrh;
- public:
- Kutija(Kutija &);
- Kutija &operator=(Kutija &);
- ~Kutija();
- Kutija(double=0,double=0,double=0,double=0,int=0);
- Kutija &operator+=(Predmet*);
- Kutija* kopija();
- void print(ostream &);
- double zapremina()const;
- double tezina()const;
- };
-
- Kutija &Kutija::operator+=(Predmet *p)
- {
- if(vrh<max)
- {
- (*(niz_p+vrh))=p->kopija();
- vrh++;
- u_tez+=p->tezina();
- }
- return *this;
- }
- Kutija::Kutija(Kutija &k)
- {
- vrh=k.vrh;
- tez=k.tez;
- a=k.a; b=k.b; c=k.c;
- max=k.max;
- niz_p=new Predmet *[max];
- for(int i=0;i<max;i++)
- (*(niz_p+i))=(*(k.niz_p+i));
- }
- Kutija &Kutija::operator=(Kutija &k)
- {
- if(this!=&k)
- {
- vrh=k.vrh;
- tez=k.tez;
- a=k.a; b=k.b; c=k.c;
- max=k.max;
- niz_p=new Predmet *[max];
- for(int i=0;i<max;i++)
- (*(niz_p+i))=(*(k.niz_p+i));
- }
- return *this;
- }
- Kutija::~Kutija()
- {
- delete [] niz_p;
- }
- Kutija::Kutija(double t,double aa,double bb,double cc,int n)
- {
- tez=t; a=aa; b=bb; c=cc; max=n; vrh=0; u_tez=t;
- niz_p=new Predmet*[max];
- }
- Kutija* Kutija::kopija()
- {
- return new Kutija(*this);
- }
- void Kutija::print(ostream &out)
- {
- out<<"KUTIJA [ "<<zapremina()<<","<<u_tez<<"/"<<tezina()<<" ]"<<endl;
- for(int i=0;i<vrh;i++)
- (*(niz_p+i))->print(out);
- /*(*(niz_p))->print(out);*/
- }
- double Kutija::zapremina()const
- {
- return a*b*c;
- }
- double Kutija::tezina()const
- {
- return tez;
- }
-
- /*----------------------------------------------RACUN--------------------------------*/
- class Racun
- {
- protected:
- vector<Artikal> artikli;
- public:
- Racun(Artikal &);
- };
- Racun::Racun(Artikal &a)
- {
- artikli.push_back(a);
- }
-
- main(int arvc,char **argv)
- {
- Predmet *p;
- Artikal a(20,"Pepsi",2,3,4);
- p=&a;
- Kutija k(20,2,2,2,50);
- k+=p;
-
- Kutija k2(20,2,2,2,50);
- Artikal a2(20,"Smoki",2,3,4);
- p=&a2;
- k2+=p;
-
- Artikal a3(20,"Keks",2,3,4);
- p=&a3;
- k2+=p;
-
- p=&k2;
- k+=p;
- cout<<k;
-
- }
Klasu Racun sam pokusao na ovaj nacin al' mi izbacuje gresku..
- class Racun
- {
- protected:
- vector<Artikal> artikli;
- public:
- Racun(Artikal &);
- };
- Racun::Racun(Artikal &a)
- {
- artikli.push_back(Artikal(a));
- }
|