Citat:
Na programskom jeziku C++ kreirati klasu Skladiste koja od privatnih atributa sadrži maksimalni kapacitet u kg (double), broj elemenata niza i niz pointera na objekte klase Element. Klasa sadrži i sledeće javne funkcije:
• konstruktor koji postavlja maksimalni kapacitet, broj elemenata niza i zauzima potreban prostor u memoriji
• destruktor
• funkciju za dodavanje jednog elementa u niz ako time ukupna količina materijala ne prevazilazi maksimalnu vrednost
• funkciju za određivanje ukupne količine materijala u skladištu
• funkciju koja štampa listu šifara svih materijala koji su uskladišteni (svaku šifru štampati po jednom)
• prijateljsku operatorsku funkciju << za štampanje liste elemenata u skladištu uredjenu u rastući niz po šifri materijala.
Kreirati klasu Element koja od zaštićenih atributa sadrži šifru (int), šifru materijala (int) i količinu (float), a od javnih funkcija:
• funkciju koja vraća šifru materijala,
• funkciju koja vraća količinu materijala
• čistu virtuelnu funkciju za štampanje podataka o elementu
• operatorsku funkciju za upoređivanje dva elementa (po šifri)
Kreirati klasu Paleta koja je javno izvedena iz klase Element,koja od privatnih atributa sadrži lot kod (niz karaktera) i tip („pck“ za paket, „silo“ za silos). Od javnih metoda sadrži:
• konstruktor koji postavlja sve atribute
• operator >> za unos podataka o paleti
U funkciji main napraviti skladište, napraviti nekoliko paketa i silosa i dodati ih skladištu. Zatim odrediti ukupnu količinu materijala u skladištu, odštampati listu šifara svih materijala koji se javljaju u skladištu i odštampati listu svih paketa i silosa.
• konstruktor koji postavlja maksimalni kapacitet, broj elemenata niza i zauzima potreban prostor u memoriji
• destruktor
• funkciju za dodavanje jednog elementa u niz ako time ukupna količina materijala ne prevazilazi maksimalnu vrednost
• funkciju za određivanje ukupne količine materijala u skladištu
• funkciju koja štampa listu šifara svih materijala koji su uskladišteni (svaku šifru štampati po jednom)
• prijateljsku operatorsku funkciju << za štampanje liste elemenata u skladištu uredjenu u rastući niz po šifri materijala.
Kreirati klasu Element koja od zaštićenih atributa sadrži šifru (int), šifru materijala (int) i količinu (float), a od javnih funkcija:
• funkciju koja vraća šifru materijala,
• funkciju koja vraća količinu materijala
• čistu virtuelnu funkciju za štampanje podataka o elementu
• operatorsku funkciju za upoređivanje dva elementa (po šifri)
Kreirati klasu Paleta koja je javno izvedena iz klase Element,koja od privatnih atributa sadrži lot kod (niz karaktera) i tip („pck“ za paket, „silo“ za silos). Od javnih metoda sadrži:
• konstruktor koji postavlja sve atribute
• operator >> za unos podataka o paleti
U funkciji main napraviti skladište, napraviti nekoliko paketa i silosa i dodati ih skladištu. Zatim odrediti ukupnu količinu materijala u skladištu, odštampati listu šifara svih materijala koji se javljaju u skladištu i odštampati listu svih paketa i silosa.
evo ga i kod
Code:
header fajl
#include <iostream>
using namespace std;
class element
{
protected:
int sifra,sifmat;
float kolicina;
public:
element();
int vratis();
float vratik();
virtual void stampaj()=0;
element& operator>(element& k);
};
class paleta:public element
{
private:
char lotkod[10];
char tip[4];
public:
paleta(char k[],char tip[]);
istream& operator>>(istream& in);
};
class skladiste
{
private:
double maxkg;
int brniz;
element* niz;
public:
skladiste(double k,int n);
~skladiste();
void dodaj();
float odredi();
void stampaj();
friend ostream& operator<<(ostream& out,skladiste& k);
};
header fajl
#include <iostream>
using namespace std;
class element
{
protected:
int sifra,sifmat;
float kolicina;
public:
element();
int vratis();
float vratik();
virtual void stampaj()=0;
element& operator>(element& k);
};
class paleta:public element
{
private:
char lotkod[10];
char tip[4];
public:
paleta(char k[],char tip[]);
istream& operator>>(istream& in);
};
class skladiste
{
private:
double maxkg;
int brniz;
element* niz;
public:
skladiste(double k,int n);
~skladiste();
void dodaj();
float odredi();
void stampaj();
friend ostream& operator<<(ostream& out,skladiste& k);
};
Code:
cpp
#include "skladiste.h"
#include <iostream>
using namespace std;
skladiste::skladiste(double k, int n)
{
this->maxkg=k;
this->brniz=n;
this->niz=new element[this->brniz];
}
skladiste::~skladiste()
{
delete[] niz;
}
void skladiste::dodaj()
{
float ukkol=0;
for(int i=0;i<this->brniz;i++)
ukkol=niz[i].kolicina+ukkol;
if(ukkol>=maxkg)
cout<<"Nema dovoljno mesta";
else
cin>>niz->sifra>>niz->sifmat>>niz->kolicina;
}
float skladiste::odredi()
{
float ukkol=0;
for(int i=0;i<this->brniz;i++)
ukkol=niz[i].kolicina+ukkol;
return ukkol;
}
void skladiste::stampaj()
{
cout<<niz->sifra;
}
ostream& operator <<(ostream& out,skladiste& k)
{
int min;
for(int i=0;i<k.brniz-1;i++)
{
for(int j=i+1;j<k.brniz;j++)
{
min=k.niz[i].sifmat;
if(min>k.niz[j].sifmat)
min=k.niz[j].sifmat;
}
out<<min;
}
return out;
}
element::element()
{
}
float element::vratik()
{
return(this->kolicina);
}
int element::vratis()
{
return(this->sifmat);
}
element& element::operator >(element &k)
{
if(this->sifmat>k.sifmat)
return k;
else return *this;
}
paleta::paleta(char k[], char tip[])
{
strcpy(this->lotkod,k);
strcpy(this->tip,tip);
}
istream& paleta::operator >>(istream &in)
{
in>>this->lotkod;
in>>this->tip;
return in;
}
cpp
#include "skladiste.h"
#include <iostream>
using namespace std;
skladiste::skladiste(double k, int n)
{
this->maxkg=k;
this->brniz=n;
this->niz=new element[this->brniz];
}
skladiste::~skladiste()
{
delete[] niz;
}
void skladiste::dodaj()
{
float ukkol=0;
for(int i=0;i<this->brniz;i++)
ukkol=niz[i].kolicina+ukkol;
if(ukkol>=maxkg)
cout<<"Nema dovoljno mesta";
else
cin>>niz->sifra>>niz->sifmat>>niz->kolicina;
}
float skladiste::odredi()
{
float ukkol=0;
for(int i=0;i<this->brniz;i++)
ukkol=niz[i].kolicina+ukkol;
return ukkol;
}
void skladiste::stampaj()
{
cout<<niz->sifra;
}
ostream& operator <<(ostream& out,skladiste& k)
{
int min;
for(int i=0;i<k.brniz-1;i++)
{
for(int j=i+1;j<k.brniz;j++)
{
min=k.niz[i].sifmat;
if(min>k.niz[j].sifmat)
min=k.niz[j].sifmat;
}
out<<min;
}
return out;
}
element::element()
{
}
float element::vratik()
{
return(this->kolicina);
}
int element::vratis()
{
return(this->sifmat);
}
element& element::operator >(element &k)
{
if(this->sifmat>k.sifmat)
return k;
else return *this;
}
paleta::paleta(char k[], char tip[])
{
strcpy(this->lotkod,k);
strcpy(this->tip,tip);
}
istream& paleta::operator >>(istream &in)
{
in>>this->lotkod;
in>>this->tip;
return in;
}
Izbacuje mi gresku da ne mogu da pristupim protected delu klase element iako sam napravio pointer na tu klasu. Kako da resim da mi ovaj kod radi?