skladiste.h
Kod:
#ifndef _SKLADISTE_H_
#define _SKLADISTE_H_
#include <iostream>
#include "predmet.h"
#include "tela.h"
#include "greske.h"
using namespace std;
class skladiste
{
predmet** niz;
int kap;
double V;
double Q;
double currV;
double currQ;
public:
skladiste(double V,double Q,int k);
skladiste(skladiste& s)
{
kap=s.kap;
V=s.V;
Q=s.Q;
for(int i=0;i<s.kap;i++)
{
niz[i]=s.niz[i];
}
}
~skladiste();
skladiste& operator+=(predmet& p);
predmet* uzmi(predmet& pp);
skladiste& operator-=(predmet& p);
friend ostream& operator<<(ostream& o, skladiste& s);
};
#endif
skladiste.cpp
Kod:
#include <iostream>
#include "skladiste.h"
#include "predmet.h"
#include "tela.h"
using namespace std;
skladiste::skladiste(double V,double Q, int k)
{
niz=new predmet*[kap=k];
for(int i=0;i<kap;i++)
niz[i]=0;
this->V=V;
this->Q=Q;
currV=0;
}
skladiste::~skladiste()
{
for(int i=0;i<kap;i++)
delete niz[i];
}
skladiste& skladiste::operator+=(predmet& p)
{
if((currV + p.V())>V)
throw("\n***Prekoracenje Zapremine!!!***");
if((currQ + p.Q())>Q)
throw("\n***Prekoracenje Tezine!!!***");
int i = 0;
while (i<kap && niz[i])
i++;
if(i==kap)
throw("\n***Prekoracenje kapaciteta!!!***");
niz[i]=&p;
currV+=p.V();
currQ+=p.Q();
return *this;
}
predmet* skladiste::uzmi(predmet& pp)
{
int i=0;
while (i<kap && (!niz[i] || !niz[i]->isti(pp)))
i++;
if(i==kap)
throw("\n***Nema tog predmeta u skladistu!!!***");
predmet* p=niz[i];
niz[i]=0;
currV-=p->V();
currQ-=p->Q();
return p;
}
skladiste& skladiste::operator-=(predmet& p)
{
skladiste::uzmi(p);
return *this;
}
ostream& operator<<(ostream& o, skladiste& s)
{
for(int i=0;i<s.kap;i++)
o<<*s.niz[i]<<endl;
return o;
}
V je ukupna zapremina skladista, Q je ukupna tezina skladista, currV je trenutna zapremina, a currQ je trenutna tezina. kap je kapacitet niza.