#include
using namespace std;
class ImaMasa{
public:
virtual double VratiMasa()=0;
virtual void pecati()=0;
virtual ~ImaMasa() {
}
};
class PaketPijalok:public ImaMasa{
private:
double volumenEden;
int Kolicina;
public:
static double gustina;
static double volumen;
static double masa;
PaketPijalok(){}
PaketPijalok(double v, int k){
volumenEden=v;
Kolicina=k;
}
~PaketPijalok(){}
double VratiMasa()override{
return gustina*volumen*masa;
}
void pecati()override
{
}
int getKolicina(){
return Kolicina;
}
};
double PaketPijalok::gustina = 0.8;
double PaketPijalok::masa = 0.2;
double PaketPijalok::volumen = 1;
class PaketSok: public ImaMasa{
private:
double volumenEden;
int Kolicina;
bool daliGaziran;
public:
PaketSok() {
}
PaketSok(int v, int k, bool g){
volumenEden = v;
Kolicina = k;
daliGaziran = g;
}
double VratiMasa()override{
return 0;
}
void pecati()override;
};
class PaketVino: public ImaMasa{
private:
double VolumenEden;
int Kolicina;
double procentAlkohol;
public:
PaketVino(int v, int k, double p) {
VolumenEden = v;
Kolicina = k;
procentAlkohol = p;
}
double VratiMasa()override{
return 0.9+procentAlkohol;
}
void pecati()override;
double getProcentAlkohol() {
return procentAlkohol;
}
};
class Kamion{
private:
char* registracija;
char* vozac;
ImaMasa** elementi;
int golemina=0;
public:
Kamion(){
elementi = new ImaMasa*[1001];
golemina = 0;
}
Kamion(char* r,char *v){
elementi = new ImaMasa*[1001];
vozac=new char[strlen(v)];
strcpy(vozac,v);
registracija=new char[strlen(r)];
strcpy(registracija,r);
try{
if (strlen(registracija)!=8)
{
throw "Pogresno vnesena registracija!";
}
if(isalpha(registracija[0])&&isalpha(registracija[1])&&isalpha(registracija[6])&&isalpha(registracija[6])){
}
else{
throw "Pogresno vnesena registracija!";
}
}
catch(const char* c){
cout<VratiMasa();
}
return masa;
}
void pecati(){
for(int i=0;ipecati();
}
}
Kamion pretovar(char* r, char*v ) {
Kamion k(r,v);
ImaMasa** niza = new ImaMasa*[1001];
int maxx=0;
for(int i=0;iVratiMasa()){
maxx=elementi[i]->VratiMasa();
}
}
int golemina_2=0;
for(int i=0;iVratiMasa()){
}
else{
niza[golemina_2] = elementi[i];
golemina_2++;
}
}
k.golemina=golemina_2;
for(int i = 0; i < golemina_2; i++) {
k.elementi[i] = niza[i];
}
return k;
}
};
int main()
{
char ime[20], reg[9];
double vol;
int kol;
bool g;
double proc;
cin>>reg;
cin>>ime;
Kamion A(reg, ime);
ImaMasa **d = new ImaMasa*[5];
cin>>vol>>kol;
cin>>g;
d[0] = new PaketSok(vol, kol, g);
cin>>vol>>kol;
cin>>proc;
d[1] = new PaketVino(vol, kol, proc);
cin>>vol>>kol;
cin>>proc;
d[2] = new PaketVino(vol, kol, proc);
cin>>vol>>kol;
cin>>g;
d[3] = new PaketSok(vol, kol, g);
cin>>vol>>kol;
cin>>proc;
d[4] = new PaketVino(vol, kol, proc);
A.dodadiElement(d[0]);
A.dodadiElement(d[1]);
A.dodadiElement(d[2]);
A.dodadiElement(d[3]);
A.dodadiElement(d[4]);
A.pecati();
cout<<"Vkupna masa: "<>reg;
cin>>ime;
Kamion B = A.pretovar(reg, ime);
B.pecati();
cout<<"Vkupna masa: "<