Documente Academic
Documente Profesional
Documente Cultură
#include<fstream>
using namespace std;
class Autovehicul
{
private:
const long id_autovehicul;
char *marca;
int nr_revizii;
int an_revizii[8];
int an_fabricatie;
static int nr_autovehicule;
public:
Autovehicul():id_autovehicul(0)
{
marca = new char[strlen("Marca")+1];
strcpy(marca, "Marca");
nr_revizii=0;
an_revizii[8]=NULL;
an_fabricatie=0;
nr_autovehicule++;
}
Autovehicul(char *m,int nrrev,int anrev[8], int anfab, long idv):id_autovehicul(idv)
{
marca=new char[strlen(m)+1];
strcpy(marca, m);
nr_revizii=nrrev;
for(int i=0;i<nr_revizii;i++)
an_revizii[i]=anrev[i];
an_fabricatie=anfab;
nr_autovehicule++;
}
Autovehicul(char *m, int anfab, long idv):id_autovehicul(idv)
{
marca=new char[strlen(m)+1];
strcpy(marca, m);
an_fabricatie=anfab;
nr_autovehicule++;
}
Autovehicul(Autovehicul &a):id_autovehicul(a.id_autovehicul)
{
marca=new char[strlen(a.marca)+1];
strcpy(marca, a.marca);
nr_revizii=a.nr_revizii;
for(int i=0;i<nr_revizii;i++)
an_revizii[i]=a.an_revizii[i];
an_fabricatie=a.an_fabricatie;
nr_autovehicule++;
}
~Autovehicul()
{
delete [] marca;
}
for(int i=0;i<a.nr_revizii;i++)
intrare>>a.an_revizii[i];
intrare>>a.an_fabricatie;
Autovehicul::nr_autovehicule++;
return intrare;
void afisare()
{
cout<<"Autovehiculul "<<marca<<" cu id-ul unic "<<id_autovehicul<<" a facut
"<<nr_revizii<<" revizii si a fost faricat in anul "<<an_fabricatie<<endl;
cout<<"Anii in care au fost efectuate revizii sunt: ";
for(int i=0;i<nr_revizii;i++)
cout<<an_revizii[i]<<' ';
cout<<endl;
}
static int get_nr_autovehicule()
{
return nr_autovehicule;
}
char* get_marca()
{
return marca;
}
int get_nr_revizii()
{
return nr_revizii;
};
int get_an_revizii()
{
return an_revizii[8];
};
int get_an_fabricatie()
{
return an_fabricatie;
};
void set_marca(char *m)
{
if(m==NULL)
cout<<"Informatii incomplete";
else
{delete [] marca;
marca = new char[strlen(m)+1];
strcpy(marca,m);}
}
void set_an_fabricatie(int anfab)
{
if(anfab<1970)
cout<<"Informatie eronata";
else
an_fabricatie=anfab;
}
void set_nr_revizii(int nrrev)
{
if(nrrev<0)
cout<<"Informatie eronata";
else
nr_revizii=nrrev;
}
void set_an_revizii(int anrev[8],int nrrev)
{
if(nrrev<0)
cout<<"Informatie eronata";
else
{for(int i=0;i<nrrev;i++)
an_revizii[i]=anrev[i];
nr_revizii=nrrev;}
}
Autovehicul operator-(Autovehicul a)
{
(*this).an_fabricatie=(*this).an_fabricatie-a.an_fabricatie;
return *this;
}
Autovehicul operator++()
{
(*this).nr_revizii++;
return *this;
}
friend Autovehicul operator++(Autovehicul &a, int)
{
Autovehicul temp = a;
a.nr_revizii++;
return temp;
}
Autovehicul operator--()
{
(*this).nr_revizii--;
return *this;
}
friend Autovehicul operator--(Autovehicul &a, int)
{
Autovehicul temp = a;
a.nr_revizii--;
return temp;
}
//Anul reviziei de mijloc; in cazul unui numar par de revizii se va returna anul mai recent
operator int()
{
if((*this).nr_revizii%2)
return (*this).an_revizii[(*this).nr_revizii/2];
else if((*this).an_revizii[(*this).nr_revizii/2-1]<(*this).an_revizii[(*this).nr_revizii/2])
return (*this).an_revizii[(*this).nr_revizii/2];
else return (*this).an_revizii[(*this).nr_revizii/2-1];
}
};
class Date_Auto
{
protected:
char *model;
char *tip_motor;
float capacitate_cilindrica;
int viteza_max;
int viteza_medie;
int viteza_med_oras;
int consum_med;
int consum_med_oras;
public:
Date_Auto()
{
model = new char[strlen("Model")+1];
strcpy(model, "Model");
tip_motor = new char[strlen("Tip_motor")+1];
strcpy(tip_motor, "Tip_motor");
capacitate_cilindrica=0;
viteza_max=0;
viteza_medie=0;
viteza_med_oras=0;
consum_med=0;
consum_med_oras=0;
}
Date_Auto(char *m,char *tm,float cc,int vmax,int vmed,int vmedo,int consm,int consmo)
{
model = new char[strlen(m)+1];
strcpy(model, m);
tip_motor = new char[strlen(tm)+1];
strcpy(tip_motor, tm);
capacitate_cilindrica=cc;
viteza_max=vmax;
viteza_medie=vmed;
viteza_med_oras=vmedo;
consum_med=consm;
consum_med_oras=consmo;
}
Date_Auto(char *m,char *tm,float cc)
{
model = new char[strlen(m)+1];
strcpy(model, m);
tip_motor = new char[strlen(tm)+1];
strcpy(tip_motor, tm);
capacitate_cilindrica=cc;
}
Date_Auto(Date_Auto &da)
{
model=new char[strlen(da.model)+1];
strcpy(model, da.model);
tip_motor=new char[strlen(da.tip_motor)+1];
strcpy(tip_motor, da.tip_motor);
capacitate_cilindrica=da.capacitate_cilindrica;
viteza_max=da.viteza_max;
viteza_medie=da.viteza_medie;
viteza_med_oras=da.viteza_med_oras;
consum_med=da.consum_med;
consum_med_oras=da.consum_med_oras;
}
~Date_Auto()
{
delete [] model;
delete [] tip_motor;
}
void operator=(Date_Auto &da)
{
delete [] model;
model=new char[strlen(da.model)+1];
strcpy(model, da.model);
delete [] tip_motor;
tip_motor=new char[strlen(da.tip_motor)+1];
strcpy(tip_motor, da.tip_motor);
capacitate_cilindrica=da.capacitate_cilindrica;
viteza_max=da.viteza_max;
viteza_medie=da.viteza_medie;
viteza_med_oras=da.viteza_med_oras;
consum_med=da.consum_med;
consum_med_oras=da.consum_med_oras;
}
friend ostream& operator<<(ostream& iesire,Date_Auto da)
{
iesire<<"Model: "<<da.model<<"; Tipul motorului: "<<da.tip_motor<<"; Viteza
maxima: "<<da.viteza_max<<"; Capacitate cilindrica: "<<da.capacitate_cilindrica<<";
Consumul mediu in oras: "<<da.consum_med_oras<<"; Viteza medie in oras:
"<<da.viteza_med_oras<<"; Consumul mediu: "<<da.consum_med<<"; Viteza medie:
"<<da.viteza_medie<<endl;
iesire<<endl;
return iesire;
}
friend ofstream& operator<<(ofstream& iesire,Date_Auto da)
{
iesire<<"Model: "<<da.model<<"; Tipul motorului: "<<da.tip_motor<<"; Viteza
maxima: "<<da.viteza_max<<"; Capacitate cilindrica: "<<da.capacitate_cilindrica<<";
Consumul mediu in oras: "<<da.consum_med_oras<<"; Viteza medie in oras:
"<<da.viteza_med_oras<<"; Consumul mediu: "<<da.consum_med<<"; Viteza medie:
"<<da.viteza_medie<<endl;
iesire<<endl;
return iesire;
}
friend istream& operator>>(istream& intrare, Date_Auto &da)
{
delete [] da.model;
da.model=new char[20];
cout<<"Model: "<<endl;
intrare>>da.model;
delete [] da.tip_motor;
da.tip_motor=new char[20];
cout<<"Tipul motorului: "<<endl;
intrare>>da.tip_motor;
cout<<"Capacitate cilindrica: "<<endl;
intrare>>da.capacitate_cilindrica;
cout<<"Viteza maxima: "<<endl;
intrare>>da.viteza_max;
cout<<"Viteza medie: "<<endl;
intrare>>da.viteza_medie;
cout<<"Viteza medie in oras: ";
intrare>>da.viteza_med_oras;
cout<<"Consumul mediu: ";
intrare>>da.consum_med;
cout<<"Consumul mediu in oras: ";
intrare>>da.consum_med_oras;
return intrare;
return capacitate_cilindrica;
}
int get_viteza_max()
{
return viteza_max;
}
int get_viteza_medie()
{
return viteza_medie;
}
int get_viteza_med_oras()
{
return viteza_med_oras;
}
int get_consum_med()
{
return consum_med;
}
int get_consum_med_oras()
{
return consum_med_oras;
}
void set_model(char* m)
{
if(m==NULL)
cout<<"Informatii incomplete";
else
{delete [] model;
model = new char[strlen(m)+1];
strcpy(model,m);}
}
void set_tip_motor(char* tm)
{
if(tm==NULL)
cout<<"Informatii incomplete";
else
{delete [] tip_motor;
tip_motor = new char[strlen(tm)+1];
strcpy(tip_motor,tm);}
}
void set_cap_cilindrica(float cc)
{
if(cc<1)
cout<<"Informatie eronata";
else
capacitate_cilindrica=cc;
}
x=1000;
(*this).capacitate_cilindrica=(*this).capacitate_cilindrica/x;
return *this;
};
class Coordonate_Geografice
{
private:
double latitudine;
double longitudine;
public:
Coordonate_Geografice()
{
latitudine=0;
longitudine=0;
}
Coordonate_Geografice(double lat, double longit)
{
latitudine=lat;
longitudine=longit;
}
Coordonate_Geografice(Coordonate_Geografice &cg)
{
latitudine=cg.latitudine;
longitudine=cg.longitudine;
}
void operator=(Coordonate_Geografice &cg)
{
latitudine=cg.latitudine;
longitudine=cg.longitudine;
}
friend ostream& operator<<(ostream& iesire,Coordonate_Geografice cg)
{
iesire<<"Latitudine: "<<
cg.latitudine<<"; Longitudine: "<<
cg.longitudine<<endl;
iesire<<endl;
return iesire;
}
friend istream& operator>>(istream& intrare, Coordonate_Geografice &cg)
{
cout<<"Latitudine: "<<endl;
intrare>>cg.latitudine;
cout<<"Longitudine: "<<endl;
intrare>>cg.longitudine;
return intrare;
}
void afisare()
{
intrare>>p.timp;
cout<<"Coordonate: ";
intrare>>p.coord;
return intrare;
}
friend ifstream& operator>>(ifstream& intrare, Pozitie &p)
{
delete [] p.denumire;
p.denumire=new char[20];
intrare>>p.denumire;
intrare>>p.timp;
intrare>>p.coord;
intrare>>p.viteza;
return intrare;
}
void afisare()
{
cout<<"Denumire: "<<denumire<<"; Timp: "<<timp<<"; Coordonate:
"<<coord<<"; Viteza: "<<viteza<<endl;
cout<<endl;
}
char* get_denumire()
{
return denumire;
}
int get_viteza()
{
return viteza;
}
int get_timp()
{
return timp;
}
Coordonate_Geografice get_coord()
{
return coord;
}
void set_denumire(char *den)
{
if(den==NULL)
cout<<"Informatii incomplete";
else
{delete [] denumire;
denumire=new char[strlen(den)+1];
strcpy(denumire,den);}
}
void set_viteza(int v)
{
if(v<0)
cout<<"Informatie eronata";
else if(v==0)
cout<<"Autovehiculul stationeaza";
else
viteza=v;
}
void set_timp(long long t)
{
if(t<0)
cout<<"Informatie eronata";
else
timp=t;
}
void set_coord(Coordonate_Geografice c)
{
coord=c;
}
};
class Zone
{
protected:
char *tip_zona;
char *restrictie;
Coordonate_Geografice punct_referinta;
Coordonate_Geografice dreapta_jos;
Coordonate_Geografice stanga_sus;
public:
Zone()
{
tip_zona=new char[strlen("Zona")+1];
strcpy(tip_zona,"Zona");
restrictie=new char[strlen("Restrictie")+1];
strcpy(restrictie,"Restrictie");
punct_referinta;
dreapta_jos;
stanga_sus;
}
Zone(char *tz,char *r,Coordonate_Geografice pref)
{
tip_zona=new char[strlen(tz)+1];
strcpy(tip_zona, tz);
restrictie=new char[strlen(r)+1];
strcpy(restrictie, r);
punct_referinta=pref;
}
Zone(char *tz,char *r,Coordonate_Geografice dj,Coordonate_Geografice ss)
{
tip_zona=new char[strlen(tz)+1];
strcpy(tip_zona, tz);
restrictie=new char[strlen(r)+1];
strcpy(restrictie, r);
dreapta_jos=dj;
stanga_sus=ss;
Zone(Zone &z)
{
tip_zona=new char[strlen(z.tip_zona)+1];
strcpy(tip_zona, z.tip_zona);
restrictie=new char[strlen(z.restrictie)+1];
strcpy(restrictie, z.restrictie);
punct_referinta=z.punct_referinta;
dreapta_jos=z.dreapta_jos;
stanga_sus=z.stanga_sus;
}
~Zone()
{
delete [] tip_zona;
delete [] restrictie;
}
void operator=(Zone &z)
{
if(tip_zona==z.tip_zona)
{delete [] tip_zona;
tip_zona=new char[strlen(z.tip_zona)+1];
strcpy(tip_zona, z.tip_zona);
delete [] restrictie;
restrictie=new char[strlen(z.restrictie)+1];
strcpy(restrictie, z.restrictie);
punct_referinta=z.punct_referinta;
dreapta_jos=z.dreapta_jos;
stanga_sus=z.stanga_sus;}
else cout<<"Zone de tip diferit!"<<endl;
}
friend ostream& operator<<(ostream& iesire,Zone z)
{
if(strstr(z.tip_zona,"Cerc"))
iesire<<"Tip_zona: cerc; Restrictie: "<<z.restrictie<<"; Punct referinta:
"<<z.punct_referinta<<endl;
else if(strstr(z.tip_zona,"Dreptunghi"))
iesire<<"Tip_zona: dreptunghi; Restrictie: "<<z.restrictie<<"; Dreapta jos:
"<<z.dreapta_jos<<"; Stanga sus: "<<z.stanga_sus<<endl;
else iesire<<"Zona nerecunoscuta";
iesire<<endl;
return iesire;
}
friend istream& operator>>(istream& intrare, Zone z)
{
delete [] z.tip_zona;
z.tip_zona=new char[10];
cout<<"Tipul zonei: "<<endl;
intrare>>z.tip_zona;
delete [] z.restrictie;
z.restrictie=new char[10];
cout<<"Restrictie: "<<endl;
intrare>>z.restrictie;
if(strstr(z.tip_zona,"Cerc"))
{
cout<<"Punct de referinta: "<<endl;
intrare>>z.punct_referinta;
}
else if(strstr(z.tip_zona,"Dreptunghi"))
{
cout<<"Dreapta jos: "<<endl;
intrare>>z.dreapta_jos;
cout<<"Stanga sus: "<<endl;
intrare>>z.stanga_sus;
}
return intrare;
raza=rz;
}
Suprafata_Zone(char *tz,char *r,Coordonate_Geografice dj,Coordonate_Geografice ss,char
*med,float lung,float lat):Zone(tz,r,dj,ss)
{
mediu=new char[strlen(med)+1];
strcpy(mediu,med);
lungime=lung;
latime=lat;
}
~Suprafata_Zone()
{
delete [] mediu;
}
Suprafata_Zone(Suprafata_Zone &sz):Zone(sz)
{
tip_zona=new char[strlen(sz.tip_zona)+1];
strcpy(tip_zona, sz.tip_zona);
restrictie=new char[strlen(sz.restrictie)+1];
strcpy(restrictie, sz.restrictie);
mediu=new char[strlen(sz.mediu)+1];
strcpy(mediu, sz.mediu);
punct_referinta=sz.punct_referinta;
dreapta_jos=sz.dreapta_jos;
stanga_sus=sz.stanga_sus;
raza=sz.raza;
lungime=sz.lungime;
latime=sz.latime;
}
void operator=(Suprafata_Zone &sz)
{
delete [] tip_zona;
tip_zona=new char[strlen(sz.tip_zona)+1];
strcpy(tip_zona, sz.tip_zona);
delete [] restrictie;
restrictie=new char[strlen(sz.restrictie)+1];
strcpy(restrictie, sz.restrictie);
delete [] mediu;
mediu=new char[strlen(sz.mediu)+1];
strcpy(mediu, sz.mediu);
punct_referinta=sz.punct_referinta;
dreapta_jos=sz.dreapta_jos;
stanga_sus=sz.stanga_sus;
raza=sz.raza;
lungime=sz.lungime;
latime=sz.latime;
}
virtual void afisare()
{
if(strstr(tip_zona,"Cerc"))
cout<<"Tip_zona: cerc; Restrictie: "<<restrictie<<"; Punct referinta:
"<<punct_referinta<<"; Mediu: "<<mediu<<"; Raza: "<<raza<<endl;
else if(strstr(tip_zona,"Dreptunghi"))
return mediu;
float get_raza()
{
return raza;
}
float get_lungime()
{
return lungime;
}
float get_latime()
{
return latime;
}
void set_mediu(char *m)
{
if(m==NULL)
cout<<"Informatii incomplete";
else
{
delete[]mediu;
mediu=new char[strlen(m) + 1];
mediu=strcpy(mediu, m);
}
}
void set_raza(float r)
{
if(r<=0)
cout<<"Informatie eronata";
else raza=r;
}
void set_lungime(float lung)
{
if(lung<=0)
cout<<"Informatie eronata";
else lungime=lung;
}
void set_latime(float lat)
{
if(lat<=0)
cout<<"Informatie eronata";
else latime=lat;
}
float get_suprafata_cerc()
{
return 3.14*raza*raza;
}
float get_suprafata_dreptunghi()
{
return lungime*latime;
};
class Green_Driving: public Date_Auto
{
protected:
char *tip_cutie_viteze;
int putere;
float emisii_CO2; //g/km
public:
Green_Driving():Date_Auto()
{
tip_cutie_viteze=new char[strlen("Cutie-viteze")+1];
strcpy(tip_cutie_viteze,"Cutie-viteze");
putere=0;
emisii_CO2=0.0;
}
Green_Driving(char *m,char *tm,float cc,int vmax,int vmed,int vmedo,int consm,int
consmo,char *cv,int p,float CO2):Date_Auto(m,tm,cc,vmax,vmed,vmedo,consm,consmo)
{
tip_cutie_viteze=new char[strlen(cv)+1];
strcpy(tip_cutie_viteze,cv);
putere=p;
emisii_CO2=CO2;
}
Green_Driving(Green_Driving &gd):Date_Auto(gd)
{
model=new char[strlen(gd.model)+1];
strcpy(model, gd.model);
tip_motor=new char[strlen(gd.tip_motor)+1];
strcpy(tip_motor, gd.tip_motor);
capacitate_cilindrica=gd.capacitate_cilindrica;
viteza_max=gd.viteza_max;
viteza_medie=gd.viteza_medie;
viteza_med_oras=gd.viteza_med_oras;
consum_med=gd.consum_med;
consum_med_oras=gd.consum_med_oras;
tip_cutie_viteze=new char[strlen(gd.tip_cutie_viteze)+1];
strcpy(tip_cutie_viteze,gd.tip_cutie_viteze);
putere=gd.putere;
emisii_CO2=gd.emisii_CO2;
}
~Green_Driving()
{
delete [] tip_cutie_viteze;
}
void operator=(Green_Driving &gd)
{
delete [] model;
model=new char[strlen(gd.model)+1];
strcpy(model,gd.model);
delete [] tip_motor;
tip_motor=new char[strlen(gd.tip_motor)+1];
strcpy(tip_motor, gd.tip_motor);
capacitate_cilindrica=gd.capacitate_cilindrica;
viteza_max=gd.viteza_max;
viteza_medie=gd.viteza_medie;
viteza_med_oras=gd.viteza_med_oras;
consum_med=gd.consum_med;
consum_med_oras=gd.consum_med_oras;
delete [] tip_cutie_viteze;
strcpy(tip_cutie_viteze,gd.tip_cutie_viteze);
putere=gd.putere;
emisii_CO2=gd.emisii_CO2;
//(a3-a2).afisare();
//a1.afisare();
//a2.afisare();
//a3.afisare();
//Autovehicul a4=a2;
//a2.afisare();
//a1=a3;
//a1.afisare();
//cout<<"..........................."<<endl;
//Autovehicul a5;
//cin>>a5;
//cout<<a5;
//a2.set_an_revizii(anrev3,3);
//a2.afisare();
//Coordonate_Geografice cg1;
//Coordonate_Geografice cg2(24683241,213124343);
//cg2.afisare();
//cout<<cg2;
//cg1=cg2;
//cout<<cg2;
//Coordonate_Geografice cg4=cg2;
//cg4.afisare();
//cin>>cg4;
//cout<<cg4;
//cg4.set_latitudine(2);
//cout<<cg4;
//Pozitie p1;
//p1.afisare();
//Coordonate_Geografice cg2(246,2131);
//Pozitie p2("Necunoscuta", 100, 43254, cg2);
//p2.afisare();
//p1=p2;
//cout<<p2;
//Pozitie p4=p2;
//p4.afisare();
//cin>>p4;
//cout<<p4;
//p4.set_coord(cg2);
//cout<<p4;
//Date_Auto da1;
//da1.afisare();
//Date_Auto da2("Logan","benzina",1800);
//Date_Auto da3("Sedan","motorina",1954,280,65,45,7,9);
//Green_Driving gd1("Sedan","motorina",1954,280,65,45,7,9,"Manuala",4324,52);
//cout<<gd1;
//Green_Driving gd2;
//gd2.afisare();
//cin>>gd2;
//int x=0;
//(da2/x).afisare();
//(da2*x).afisare();
//(da3+da2).afisare();
//da2.afisare();
//da3.afisare();
//Date_Auto da4=da2;
//da2.afisare();
//da1=da3;
//da1.afisare();
//Date_Auto da6;
//cin>>da6;
//cout<<da6;
//Coordonate_Geografice cg2(246,2131);
//Zone z1("Cerc","r1",cg2);
//Coordonate_Geografice cg3(231,1097);
//Zone z2("Dreptunghi","r2",cg3,cg2);
//z1.afisare();
//z2.afisare();
//z2=z1;
//z2.afisare();
//Zone z3("Cerc","r6",cg2);
//Zone z4("Dreptunghi","r9",cg3,cg2);
//cout<<z3;
//cout<<z4;
//Suprafata_Zone sz1("Cerc","R5",cg2,"Urban",5);
//sz1.afisare();
//cout<<sz1.get_suprafata_cerc();
//cout<<sz1;
//Suprafata_Zone z0;
//cout<<z0;
//Suprafata_Zone z01;
//cin>>z01;
//cout<<z01;
/*Pozitie a2;
ifstream g("1.txt",ios_base::in);
while(!g.eof()){
g>>a2;
cout<<a2;}
g.close();*/
/*Date_Auto a2;
ifstream f("2.txt",ios_base::in);
while(!f.eof()){
g>>a2;
cout<<a2;}
g.close();*/
}