Prikaz jedne poruke
Stara 24.6.2013, 16:18   #235
Twisterzemun
Član
 
Član od: 6.2.2012.
Poruke: 151
Zahvalnice: 87
Zahvaljeno 60 puta na 40 poruka
Određen forumom Re: How to... C++

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.
Twisterzemun je offline   Odgovor sa citatom ove poruke