Logen
Slavan
- Učlanjen(a)
- 20.12.2009
- Poruke
- 1,677
- Poena
- 375
Moja oprema
- Laptop
- Macbook Air M1
- Mobilni telefon
- iPhone 14 Pro
- Pristup internetu
- Optički internet
Imam problem sa ovim zadatkom:
Evo i mog koda:
Problem je sto mi izbacuje greske, tj. ne daje mi da pristupam protected atributima element klase iako sam napravio niz koji ukazuje na tu klasu. Ako neko moze da mi pokaze gde gresim...
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.
Evo i mog koda:
Kod:
//skladiste.h
#include <iostream>
using namespace std;
class element
{
protected:
int sifra,sifmat;
float kolicina;
public:
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);
};
Kod:
//.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[n];
}
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;
}
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;
}
Problem je sto mi izbacuje greske, tj. ne daje mi da pristupam protected atributima element klase iako sam napravio niz koji ukazuje na tu klasu. Ako neko moze da mi pokaze gde gresim...