[ gospodin.kojot @ 14.12.2012. 00:02 ] @
Imam sledeci zadatak: 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. 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); }; 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; } 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? |