w#include <iostream>///131 Visan Traian-Dimitrie Compilator:cygwin64
#include<cstring>
#include<vector>
class Masca
{
char tipprotectie[5];
};
class MascaChirugicala:public Masca
{
char tipprotectie[5];
char* culoare;
int nrpliuri;
public:
MascaChirugicala()
{
strcpy(this->tipprotectie,"ffp1");
this->culoare=new char[3];
strcpy(this->culoare,"alb");
this->nrpliuri=0;
}
MascaChirugicala(const char *t,const char *c,int n)
{
strcpy(this->tipprotectie,t);
strcpy(this->culoare,c);
this->nrpliuri=n;
}
MascaChirugicala(MascaChirugicala &ob)
{
strcpy(this->culoare,ob.culoare);
strcpy(this->tipprotectie,ob.tipprotectie);
this->nrpliuri=ob.nrpliuri;
}
~MascaChirugicala()=default;
MascaChirugicala const operator=(MascaChirugicala &ob)
{
strcpy(this->culoare,ob.culoare);
strcpy(this->tipprotectie,ob.tipprotectie);
this->nrpliuri=ob.nrpliuri;
return *this;
}
MascaChirugicala set(const char *t,const char *c, int n)
{
strcpy(this->culoare,c);
strcpy(this->tipprotectie,t);
this->nrpliuri=n;
return *this;
}
char *get_tip()
{
return this->tipprotectie;
}
char *get_cul()
{
return this->culoare;
}
int get_pliu()
{
return this->nrpliuri;
}
friend std::istream &operator>>(std::istream in,MascaChirugicala ob);
friend std::ostream &operator<<(std::ostream out,const MascaChirugicala &ob);
};
std::istream operator>>(std::istream in,MascaChirugicala &ob)
{
char t[5],c[20];
int n;
in.get(t,5);
in.get();
in.get(c,20);
in.get();
in>>n;
ob.set(t,c,n);
return in;
}
std::ostream operator<<(std::ostream out, MascaChirugicala ob)
{
out<<ob.get_tip()<<' '<<ob.get_cul()<<' '<<ob.get_pliu();
return out;
}
class MascaPolicarbonat: public Masca
{
char tipprotectie[5], *tprindere;
public:
MascaPolicarbonat()
{
strcpy(this->tipprotectie,"ffp0");
strcpy(this->tprindere,"elastic");
}
MascaPolicarbonat(char *p)
{
strcpy(this->tipprotectie,"ffp0");
strcpy(this->tprindere,p);
}
MascaPolicarbonat set(char *s,char *t)
{
strcpy(this->tipprotectie,s);
strcpy(this->tprindere,t);
}
~MascaPolicarbonat()=default;
char *getprot()
{
return this->tipprotectie;
}
char *getprind()
{
return this->tprindere;
}
friend std::istream &operator>>(std::istream in,MascaPolicarbonat ob);
friend std::ostream &operator<<(std::ostream out,MascaPolicarbonat ob);
};
std::istream &operator>>(std::istream in,MascaPolicarbonat ob)
{
char *s,*t;
in.get(s,20);
in.get();
in.get(t,20);
in.get();
ob.set(s,t);
return in;
}
std::ostream &operator<<(std::ostream out,MascaPolicarbonat ob)
{
out<<ob.getprot()<<' '<<ob.getprind();
}
class Dezinfectant
{
int nr;
std::vector <std::string>ing;
std::vector <std::string>mat;
public:
Dezinfectant()
{
nr=0;
}
long long getnr()
{
return this->nr;
}
Dezinfectant(long long n, std::vector<std::string>a, std::vector<std::string>b)
{
this->nr=n;
this->ing=a;
this->mat=b;
}
~Dezinfectant()=default;
virtual long long eficienta()=0;
};
class DezinfectantBacterii:public Dezinfectant
{
public:
long long eficienta()
{
return this->getnr()/1000000000;
}
};
class DezinfectantVirusuri:public Dezinfectant
{
public:
long long eficienta()
{
return this->getnr()/1500000;
}
};
class DezinfectantFungi:public Dezinfectant
{
public:
long long eficienta()
{
return this->getnr()/1000000000;
}
};
class Achizitie
{
int data,luna,an,mdez,mmas;
Dezinfectant **dez;
Masca **mas;
char* nume;
public:
Achizitie(int d,int l,int a, char* n)
{
this->data=d;
this->luna=l;
this->an=a;
strcpy(this->nume,n);
}
Achizitie()=default;
~Achizitie()=default;
Achizitie operator +=(Dezinfectant ob)
{
}
};
int main() {
MascaChirugicala mc1, mc2("ffp2", "verde brot�cel", 55), mc3(mc1), mc4, mc5;
mc4 = mc2;
std::cin >> mc5;
std::cout << mc1 << mc2;
MascaPolicarbonat* mp1=new MascaPolicarbonat(), * mp2=new MascaPolicarbonat();
MascaPolicarbonat* mp3 = new MascaPolicarbonat("elastic");
std::cin >> mp1 >> mp2;
std::cout <<mp3;
Dezinfectant* d1 = new DezinfectantBacterii(100000000, std::vector<std::string>({"sulfatinon-ionici", "sulfati cationici", "parfumuri", "Linalool", "Metilpropanol butilpentil"}),std::vector({"lemn, sticla, metal, ceramica, marmura"}));
Dezinfectant* d2 = new DezinfectantVirusuri(50000000, std::vector<std::string>({"AlkilDimetilm Benzil Crlorura de amoniu", "parfumuri", "Butilpentil metilpropinal"}),std::vector({"lemn, sticla, ceramica, marmura"}));
Dezinfectant* d3 = new DezinfectantFungi(1400000, std::vector<std::string>({"Alkil EtilBenzil Crlorura de amoniu", "parfumuri", "Butilpentil metilpropinal"}),std::vector({"sticla, plastic"}));
std::cout << d1->eficienta() << " " << d2->eficienta() << " " << d3->eficienta() << "\n";
Achizitie* a1 = new Achizitie(26, 5, 2020, "PlushBio SRL");
*a1 += mp1; //se adauga masca de policarbonat mp1 in lista de masti achizitionate
*a1 += (&mc1); //se adauga masca chirugicala mc1 in lista
*a1 += d3; // se adauga dezinfectantu de fungi d3 in lista de dezinfectanti achizitionati
Achizitie* a2 = new Achizitie(25, 5, 2020, "Gucci");
*a2 += d1;
*a2 += d2;
*a2 += d2;
Achizitie a3, a4(*a1);
a3 = *a2;
if(*a1 < *a2) {
std::cout << a1->nume() << " are valoarea facturii mai mica.\n";
}else if (*a1 == *a2) {
std::cout << a1->nume() << " si " << a2->nume() << " au aceasi valoare afacturii.\n";}
else {
std::cout << a2->nume() << " are valoarea facturii mai mica.\n";
}
return 0;
}