Sunteți pe pagina 1din 4

#include <iostream>

#include<string>
using namespace std;

class Locuinta
{
private:
const int id;
string proprietar;
int nrCamere;
float* suprafete;
static int nrLocuinte;
public:
//destructor
//~Locuinta()
//{
// delete[] suprafete;
//}

//constructor cu un parametru(nr camere=101)


Locuinta(int id2) :id(id2)
{
nrLocuinte++;
this->proprietar = "Anonim";
this->nrCamere = 1;
this->suprafete = new float[this->nrCamere];
for (int i = 0; i < this->nrCamere; i++)
{
this->suprafete[i] = 000;
}
}

//get Propietar
string getProprietar()
{
return this->proprietar;
}

//constructor cu toti parametrii


Locuinta(int id2, string proprietar, int nrCamere, float* suprafete) :id(id2)
{
nrLocuinte++;
this->proprietar = proprietar;
this->nrCamere = nrCamere;
this->suprafete = new float[this->nrCamere];
for (int i = 0; i < this->nrCamere; i++)
{
this->suprafete[i] = suprafete[i];
}
}

//get nr Camere
int getNrCamere()
{
return this->nrCamere;
}

//cobstrctur cop
Locuinta(Locuinta &S) :id(S.id)
{
nrLocuinte++;
this->proprietar = S.proprietar;
this->nrCamere = S.nrCamere;
this->suprafete = new float[this->nrCamere];
for (int i = 0; i < this->nrCamere; i++)
{
this->suprafete[i] = S.suprafete[i];
}
}

//get pt ID
int getId()
{
return this->id;
}

//set pentru suprafete


void setSuprafete(float* suprafete_noi, int nrCamere)
{
delete[] this->suprafete;
this->nrCamere = nrCamere;
this->suprafete = new float[this->nrCamere];
for (int i = 0; i < this->nrCamere; i++)
{
this->suprafete[i] = suprafete_noi[i];
}
}

//get pentru suprafete


float* getSuprafete()
{
return this->suprafete;
}

//operator =
Locuinta &operator=(Locuinta &S)
{
this->proprietar = S.proprietar;
delete[] this->suprafete;
this->nrCamere = S.nrCamere;
this->suprafete = new float[this->nrCamere];
for (int i = 0; i < this->nrCamere; i++)
{
this->suprafete[i] = S.suprafete[i];
}

return *this;
}

//get nr locuinte
static int getNrLocuinte()
{
return nrLocuinte;
}

//calculeaza suprafata maxima


float calculeazaSuprafataMaxima()
{
float max = 0;
for (int i = 0; i < this->nrCamere; i++)
{
if (this->suprafete[i] > max) max = this->suprafete[i];
}

return max;
}

//operator +
Locuinta &operator+(float n)
{
float* suprafete_noi;
suprafete_noi = new float[this->nrCamere];
for (int i = 0; i < this->nrCamere; i++)
{
suprafete_noi[i] = this->suprafete[i];
}
delete[] this->suprafete;
this->nrCamere = (this->nrCamere) + 1;
this->suprafete = new float[this->nrCamere];
for (int i = 0; i < (this->nrCamere)-1; i++)
{
this->suprafete[i] = suprafete_noi[i];
}
for (int i = 0; i < (this->nrCamere) - 1; i++)
{
this->suprafete[i] = ;
}
delete[] suprafete_noi;

return *this;

friend void operator<<(ostream &out, Locuinta &S);


};

void operator<<(ostream &out, Locuinta &S)


{
out << S.getId() << ";";
out << S.getSuprafete()[0];
}

int Locuinta::nrLocuinte = 0;

void main()
{
Locuinta l1(101);
cout << l1.getProprietar() << endl;
float suprafete[]{ 12.5,14.5,5.0,6.5,20.0 };
Locuinta l2(102, "Popescu Ion", 5, suprafete);
cout << l2.getNrCamere() << endl;

Locuinta l3 = l2;
cout << l3.getId() << endl;//afiseaza 102
float suprafete_noi[]{ 11,8.6,12.0 };
l3.setSuprafete(suprafete_noi, 3);
cout << l3.getSuprafete()[1] << endl;;

Locuinta l4(104);
l1 = l4 = l3;
cout << Locuinta::getNrLocuinte()<< endl;
float suprafataMaxima = l1.calculeazaSuprafataMaxima();
cout << "Suprafata maxima este:" << suprafataMaxima << endl;

Locuinta* p1 = new Locuinta(103);


*p1 = l2;
cout << *p1;

//delete[] p1;
Locuinta l5 = l2+21;
cout << "\nxcx"<<l5.calculeazaSuprafataMaxima();

S-ar putea să vă placă și