Sie sind auf Seite 1von 19

#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <string>

using namespace std;

class teren
{
private:
string cultura;// porumb , grau , orz , lucerna , etc...
int cod[3];//numar cadastral
int vechime_teren;
int* productie;//productia exprimata in kg in ultimii ani (vechime_teren
char* localitate; // localitatea in care se afla terenul
float suprafata; // exprimata in ha
int cost; //exprimat in lei/an
static int parcela;
const int tip;// 0: urmeaza sa cumparam acest teren si nu detinem date
despre el
// 1: suntem proprietari ( nu platim arenda )
// 2: terenul este arendat de la o pj sau pf , pretul
per ha este stabilit de proprietar

public:
//constructor fara parametrii
teren() :tip(0)
{
this->cultura = "Necunoscuta";
this->cod[0] = 0;
this->localitate = new char[1];
this->localitate[0] = 'n';
this->vechime_teren = 0;
this->productie = new int[2];
this->productie[0] = -1;
this->suprafata = -1;
this->cost = -1;
this->parcela++;
}
teren(string culturaC, int codC[], int vechime_terenC, int* productieC, char*
localitateC, float suprafataC) :tip(1)
{
int i;
this->cultura = culturaC;
for (i = 0; i < 3; i++)
{
this->cod[i] = codC[i];
}
this->vechime_teren = vechime_terenC;
this->productie = new int[this->vechime_teren];
for (i = 0; i < this->vechime_teren; i++)
this->productie[i] = productieC[i];

strcpy(this->localitate, localitateC);
this->suprafata = suprafataC;
this->cost = 0;
this->parcela++;
}

teren(string culturaC, int codC[], int vechime_terenC, int* productieC, char*


localitateC, float suprafataC, int costC) :tip(2)
{
int i;
this->cultura = culturaC;
for (i = 0; i < 3; i++)
{
this->cod[i] = codC[i];
}
this->vechime_teren = vechime_terenC;
this->productie = new int[this->vechime_teren];
for (i = 0; i < this->vechime_teren; i++)
this->productie[i] = productieC[i];

strcpy(this->localitate, localitateC);
this->suprafata = suprafataC;
this->cost = costC;
this->parcela++;
}

~teren()
{

if (this->productie != NULL)
delete[] this->productie;

if (this->localitate != NULL)

delete[] this->localitate;

this->parcela--;
cout << "\nApel destructor\n";
}

void afisare()
{
cout << "Parcela " << this->parcela << ":\n";
cout << "Pe parcela cu codul ";
for (int i = 0; i < 3; i++)
cout << this->cod[i];
if (this->vechime_teren > 0) cout << " din localitatea " << this-
>localitate << " cultivam : " << this->cultura << "\n";
else cout << " din localitatea " << this->localitate[0] << " cultivam :
" << this->cultura << "\n";
if (this->vechime_teren > 0)
{
cout << "Am obtinut in ultimii " << this->vechime_teren << "
productiile :\n";
for (int i = 0; i < this->vechime_teren; i++)
cout << "Anul " << i + 1 << " : " << this->productie[i] <<
"\n";
}
else cout << "Pe acest teren inca nu avem o statistica iar pretul este
necunscut\n";
if (this->cost == 0) cout << "Pentru acest teren nu platim arenda";
else cout << "pretul este de " << this->cost << " pe ha\n";
cout << " suprafata este de " << this->suprafata << " ha\n";

}
void prelucrare()
{
float medie;
int suma = 0;
for (int i = 0; i < this->vechime_teren; i++)
suma = suma + this->productie[i];
medie = (float)(suma) / (float)(this->vechime_teren);
cout << "Productia medie in ultimii " << this->vechime_teren << " ani a
fost " << medie << "\n";
}

teren& operator=(const teren& t)


{
int i;
this->cultura = t.cultura;
for (i = 0; i < 3; i++)
this->cod[i] = t.cod[i];
this->vechime_teren = t.vechime_teren;
if (this->productie != NULL)
delete[] this->productie;
this->productie = new int[this->vechime_teren];
for (i = 0; i < this->vechime_teren; i++)
this->productie[i] = t.productie[i];
if (this->localitate != NULL)
delete this->localitate;
this->localitate = new char[strlen(t.localitate) + 1];
strcpy(this->localitate, t.localitate);
this->suprafata = t.suprafata;
this->cost = t.cost;
return *this;
}

string getcultura()
{
return this->cultura;
}
void setcultura(string culturaNoua)
{
if (culturaNoua.length() > 0) this->cultura = culturaNoua;
else cout << "\nImposibil de a face modificarea\n";
}
int getcod(int i)
{

return this->cod[i];
}
void setcod(int codNou, int pozitie)
{
if (pozitie >= 0)
this->cod[pozitie] = codNou;
else cout << "\nImposibil de a face modificarea\n";
}
int getvechime()
{
return this->vechime_teren;
}
/*void setvechime(int vechimeNoua)
{
this->vechime_teren = vechimeNoua;
}*/
// nu o sa folosesc un setter pt vechime deoarece daca vechimeNoua>this-
>vechime_teren
// this->productie[ vechimeNoua-1] este o zona nealocata si necunoscuta :D
int getproductie(int i)
{
return this->productie[i];
}
void setproductie(int* productie_noua, int ani)
{
if (this->productie != NULL)
delete[] this->productie;

this->vechime_teren = ani;
this->productie = new int[ani];
for (int i = 0; i < this->vechime_teren; i++)
{
this->productie[i] = productie_noua[i];
}

}
char* getlocalitate()
{
return this->localitate;
}
void setlocalitate(char* localitateNoua)
{
if (localitateNoua != NULL)
{
if (this->localitate != NULL)
delete[] this->localitate;
this->localitate = new char[strlen(localitateNoua) + 1];
strcpy(this->localitate, localitateNoua);
}
else cout << "\nImposibil de a face modificarea\n";
}
float getsuprafata()
{
return this->suprafata;
}
void setsuprafata(float suprafataNoua)
{
if (suprafataNoua > 0)
this->suprafata = suprafataNoua;
else cout << "\nImposibil de a face modificarea\n";
}
int getcost()
{
return this->cost;
}
void setcost(int costNou)
{
if (costNou >= 0)
this->cost = costNou;
else cout << "\nImposibil de a face modificarea\n";
}
static void setparcela(int parcelaNoua)
{
if (parcelaNoua > 0)
teren::parcela = parcelaNoua;
else cout << "\nImposibil de a face modificarea\n";
}
static int getparcela()
{
return parcela;
}

//supraincarcare <<
friend ostream& operator<<(ostream& out, teren& t)
{
out << "Parcela " << t.parcela << ":\n";
out << "Pe parcela cu codul ";
for (int i = 0; i < 3; i++)
out << t.cod[i];
if (t.vechime_teren > 0) out << " din localitatea " << t.localitate <<
" cultivam : " << t.cultura << "\n";
else out << " din localitatea " << t.localitate[0] << " cultivam : " <<
t.cultura << "\n";
if (t.vechime_teren > 0)
{
out << "Am obtinut in ultimii " << t.vechime_teren << "
productiile :\n";
for (int i = 0; i < t.vechime_teren; i++)
out << "Anul " << i + 1 << " : " << t.productie[i] << "\n";
}
else out << "Pe acest teren inca nu avem o statistica iar pretul este
necunscut\n";
if (t.cost == 0) out << "Pentru acest teren nu platim arenda\n";
else out << "pretul este de " << t.cost << " pe ha\n";
out << " suprafata este de " << t.suprafata << " ha\n";
return out;
}
friend istream& operator>> (istream& in, teren& t)
{
if (t.localitate != NULL) delete[] t.localitate;
t.localitate = new char[20];
cout << "localitatea este : "; in >> t.localitate; cout << "\n";
cout << "cultura este : "; in >> t.cultura; cout << "\n";
int i;
cout << "codul este:(introduceti cifra cu cifra) ";
for (i = 0; i < 3; i++)
{
in >> t.cod[i];
if (t.cod[i] > 9 || t.cod[i] < 0) { cout << "\n repetati , e
posibil sa nu fie cifra\n"; i--; }
}
cout << "\n";
cout << "Detinem acest teren de : "; in >> t.vechime_teren; cout <<
"ani\nAm avut urmatoarele productii:\n";
if (t.productie != NULL) delete[] t.productie;
t.productie = new int[t.vechime_teren];
for (i = 0; i < t.vechime_teren; i++)
{
cout << "Anul " << i << " : ";
in >> t.productie[i];
cout << "\n";
}
cout << "suprafata este de : "; in >> t.suprafata; cout << " ha\n";
cout << "costul este de : "; in >> t.cost; cout << " lei pe ha\n";

return in;
}
bool operator== (teren& t1)
{
if (t1.cod[1] == this->cod[2] && t1.cod[1] == this->cod[2] && t1.cod[1]
== this->cod[2] && t1.cultura == this->cultura && t1.suprafata == this->suprafata)
return 1;
return 0;
}

bool operator>(teren& t1)//verificam daca suprafata t1 este mai mare fata de


suprafata obiectului nostru (t1>obiect)
{
if (this->suprafata > t1.suprafata) return 1;
return 0;
}
bool operator !() {
if (this->productie != NULL) {
return 0;
}
else {
return 1;
}
}
friend teren& operator++(teren&);

friend teren& operator++ (teren&, int);


friend teren& operator--(teren&);
friend teren& operator--(teren&, int);
friend int operator+(int i, teren& t)
{
return t.cost + i;
}
friend int operator+(teren& t, int i)
{
return t.cost + i;
}
int operator-(teren& tx)
{
return this->cost - tx.cost;
}
operator int()
{
return int(this->suprafata);

}
int operator[](int i)
{
if (i > -1 && i < 3) return this->cod[i];
return -1;
}
};
teren& operator++(teren& t)
{

t.cost++;
return t;

}
teren& operator++ (teren& ti, int i)
{
teren& aux = ti;

ti.cost++;
return aux;
}
teren& operator--(teren& t)
{
t.cost--;
return t;
}
teren& operator--(teren& t, int i)
{
teren& auxx = t;

t.cost++;
return auxx;
}
int teren::parcela = 0;

class animal {
private:
string rasa; // rasa ( rasa de vaci in cazul nostru )
int id[2];// avem maxim 99 de animale , deci fiecare animal are un id unic
salvat in id[0] si id[1]
char* nume; // cum alintam animalul
int nr_produsi; // cate fatari a avut
int* g_prod; // greutatea produsilor cand au fost vanduti , aproximativ
double greutate; //greutatea lui exacta in momentul cantaririi
static int numar;
const int tipa;//0 pentru animale pentru care nu cunoastem detalii
//1 pentru animale cunoscute dar pastrate pentru reproductie , deci greutatea
nu conteaza( o setam 0)
//2 pentru animale destinate sacrificarii , deci greutatea o sa fie cea din
momenutl cantaririi
public:
animal() :tipa(0)
{
this->rasa = "necunoscuta";
this->id[0] = 0;
this->id[1] = 0;
this->nume = new char[strlen("necunoscut") + 1];
strcpy(this->nume, "necunoscut");
this->nr_produsi = 0;
this->g_prod = new int[1];
this->g_prod[0] = 0;
this->greutate = 0.00;
this->numar++;

}
animal(string rasan, int* idn, char* numen, int nr_produsin, int* g_prodn,
double greutaten) :tipa(2)
{
this->rasa = rasan;
this->id[0] = idn[0];
this->id[1] = idn[1];
this->nume = new char[strlen(numen) + 1];
strcpy(this->nume, numen);
this->nr_produsi = nr_produsin;
this->g_prod = new int[this->nr_produsi];
for (int i; i < this->nr_produsi; i++)
this->g_prod[i] = g_prodn[i];
this->greutate = greutaten;
this->numar++;

}
animal(string rasan, int* idn, char* numen, int nr_produsin, int* g_prodn)
:tipa(1)
{
this->rasa = rasan;
this->id[0] = idn[0];
this->id[1] = idn[1];
this->nume = new char[strlen(numen) + 1];
strcpy(this->nume, numen);
this->nr_produsi = nr_produsin;
this->g_prod = new int[this->nr_produsi];
for (int i; i < this->nr_produsi; i++)
this->g_prod[i] = g_prodn[i];
this->greutate = 0;
this->numar++;

}
animal(const animal& a) :tipa(200)
{
this->rasa = a.rasa;
this->id[0] = a.id[0];
this->id[1] = a.id[1];
this->nume = new char[strlen(a.nume)];
strcpy(this->nume, a.nume);
this->nr_produsi = a.nr_produsi;
this->g_prod = new int[this->nr_produsi];
for (int i = 0; i < this->nr_produsi; i++)
this->g_prod[i] = a.g_prod[i];
this->greutate = a.greutate;
this->numar = a.numar;

}
~animal()
{
if (this->g_prod != NULL) delete[] this->g_prod;
this->numar--;
cout << "apel destrucotr\n";
}
void afisare()
{
cout << "Rasa este : " << this->rasa << "\n";
cout << "Numele animalului este : " << this->nume << "\n";
cout << "Codul este : " << this->id[0] * 10 + this->id[1] << "\n";
cout << "Numarul de produsi este: " << this->nr_produsi << "\n";
for (int i = 0; i < this->nr_produsi; i++)
{
cout << "Produsul " << i + 1 << "a avut greutatea :" << this-
>g_prod[i] << "\n";
}
cout << "Greutatea acestui animal este : " << this->greutate << "\n";

}
double medie()
{
int i, suma = 0;
double m;
for (i = 0; i < this->nr_produsi; i++)
{
suma = suma + this->g_prod[i];
}
m = (double)((double)(suma) / (double)(this->nr_produsi));
return m;
}
string getrasa()
{
return this->rasa;
}
char* getnume()
{
return this->nume;
}
int getnrprod()
{
return this->nr_produsi;
}
int getgreutati(int i)
{
return this->g_prod[i];
}
double getgreutate()
{
return this->greutate;
}
int getid(int i)
{
return this->id[i];
}
void setrasa(string rasan)
{
if (rasan.length() > 0)
this->rasa = rasan;
}
void setnume(char* numen)
{
if (strlen(numen) > 1)
{
if (this->nume != NULL) delete[] this->nume;
this->nume = new char[strlen(numen)];
strcpy(this->nume, numen);
}
}
void setgreutatiprod(int* greun, int nrprodn)
{
if (nrprodn > 0)
{
this->nr_produsi = nrprodn;
if (this->g_prod != NULL) delete[] this->g_prod;
this->g_prod = new int[nrprodn];
for (int i = 0; i < nrprodn; i++)
this->g_prod[i] = greun[i];
}
}
void setgreutate(double greutaten)
{
if (greutaten > 0)
this->greutate = greutaten;
}
void setid(int indexid, int valoareid)
{
if (indexid > -1 && indexid < 2)
this->id[indexid] = valoareid;
}
friend ostream& operator<<(ostream& out, animal& a)
{
out << "Rasa este : " << a.rasa << "\n";
out << "Numele animalului este : " << a.nume << "\n";
out << "Codul este : " << a.id[0] * 10 + a.id[1] << "\n";
out << "Numarul de produsi este: " << a.nr_produsi << "\n";
for (int i = 0; i < a.nr_produsi; i++)
{
out << "Produsul " << i + 1 << "a avut greutatea :" <<
a.g_prod[i] << "\n";
}
out << "Greutatea acestui animal este : " << a.greutate << "\n";
return out;
}
friend istream& operator>>(istream& in, animal& a)
{
cout << "Rasa este : "; in >> a.rasa; cout << "\n";
cout << "Numele animalului este : "; in >> a.nume; cout << "\n";
cout << "Codul este : "; in >> a.id[0]; in >> a.id[1]; cout << "\n";
cout << "Numarul de produsi este: "; in >> a.nr_produsi; cout << "\n";
if (a.g_prod != NULL) delete[] a.g_prod;
a.g_prod = new int[a.nr_produsi];
for (int i = 0; i < a.nr_produsi; i++)
{
cout << "Produsul " << i + 1 << "a avut greutatea :"; in >>
a.g_prod[i]; cout << "\n";
}
cout << "Greutatea acestui animal este : "; in >> a.greutate; cout <<
"\n";
return in;
}
animal& operator=(animal& a)
{
this->rasa = a.rasa;
this->id[0] = a.id[0];
this->id[1] = a.id[1];
this->nume = new char[strlen(a.nume)];
strcpy(this->nume, a.nume);
this->nr_produsi = a.nr_produsi;
this->g_prod = new int[this->nr_produsi];
for (int i = 0; i < this->nr_produsi; i++)
this->g_prod[i] = a.g_prod[i];
this->greutate = a.greutate;
this->numar = a.numar; this->numar++;
return *this;
}
int operator[](int i)
{
if (i > -1 && i < this->nr_produsi)
return this->g_prod[i];
}
friend double operator+(double i, animal& a)
{
return a.greutate + i;
}
friend int operator+(animal& a, int i)
{
return a.greutate + i;
}
int operator-(animal& a)
{
return this->greutate - a.greutate;
}

bool operator== (animal& a)


{
if (this->id[0] == a.id[0] && this->id[1] == a.id[1] && a.greutate ==
this->greutate && this->rasa == a.rasa)
return 1;
return 0;
}
bool operator>(animal& a)//verificam daca greutatea lui a este mai mare fata
de greutatea obiectului nostru (a>obiect)
{
if (this->greutate > a.greutate) return 1;
return 0;
}
bool operator !() {
if (this->greutate != NULL) {
return 0;
}
else {
return 1;
}
}
friend animal& operator++(animal&);

friend animal& operator++ (animal&, int);


friend animal& operator--(animal&);
friend animal& operator--(animal&, int);
operator int()
{
return int(this->greutate);

}
};

animal& operator++(animal& a)
{

a.greutate++;
return a;

}
animal& operator++ (animal& ai, int i)
{
animal& aux = ai;

ai.greutate++;
return aux;
}
animal& operator--(animal& a)
{
a.greutate--;
return a;
}
animal& operator--(animal& a, int i)
{
animal& auxx = a;

a.greutate--;
return auxx;
}
int animal::numar = 0;

class utilaj
{
private:
string sasiu;// tractor , masina , remorca , sedan , coupe
char* numar;// de exemplu b88xfg
double km; // in momentul intrarii in "baza de date"
int revizii;// numarul de intrari in servici
int* rev; // la fiecare revizie , kilometrii pe care ii avea utiliajul (un
mic istoric al kilometrilor)
int an_fab[4];
static int gestiune;// o mica gestiunea a numarul de vechicule detinute de
companie
const int identificare;// 0 pentru necunoscut
//1 pentru utilaj nou , deci an fab=2020 ,
//2 pentru utilaj uzat
//3 pentru utilaj dublura cu aceleasi specificatii
public:
utilaj() :identificare(0)
{
this->sasiu = "necunoscut";
this->numar = new char[7];
strcpy(numar, "b00aaa");
this->revizii = 0;
this->rev = new int[0];
this->an_fab[0] = 0;
this->gestiune++;
this->km = 0;

}
utilaj(string sasiun, char* numarn, double kmn, int reviziin, int* revn, int*
an_fabn) :identificare(1)
{
int i;
this->sasiu = sasiun;
this->numar = new char[7];
strcpy(numar, numarn);
this->revizii = reviziin;
if (this->rev != NULL) delete[] this->rev;
this->rev = new int[this->revizii];
for (i = 0; i < reviziin; i++)
this->rev[i] = revn[i];
for (i = 0; i < 4; i++)
this->an_fab[i] = an_fabn[i];
this->gestiune++;
this->km = kmn;

}
utilaj(string sasiun, char* numarn, double kmn, int reviziin, int* revn)
:identificare(1)
{
int i;
this->sasiu = sasiun;
this->numar = new char[7];
strcpy(numar, numarn);
this->revizii = reviziin;
if (this->rev != NULL) delete[] this->rev;
this->rev = new int[this->revizii];
for (i = 0; i < reviziin; i++)
this->rev[i] = revn[i];
for (i = 0; i < 4; i++)
this->an_fab[i] = 0;
this->gestiune++;
this->km = kmn;
}
utilaj(utilaj& u) :identificare(3)
{
int i;
this->sasiu = u.sasiu;
this->numar = new char[7];
strcpy(numar, u.numar);
this->revizii = u.revizii;
if (this->rev != NULL) delete[] this->rev;
this->rev = new int[this->revizii];
for (i = 0; i < u.revizii; i++)
this->rev[i] = u.rev[i];
for (i = 0; i < 4; i++)
this->an_fab[i] = u.an_fab[i];
this->gestiune++;
this->km = u.km;
}
~utilaj()
{
if (this->numar != NULL)delete[] this->numar;
if (this->rev != NULL) delete[] this->rev;
cout << "Apel destructor \n";
}
void afisare()
{
cout << "Tipul utilajului este : ";
cout << this->sasiu;
cout << "\n";
cout << "Numarul autoturismului este : ";
cout << this->numar;
cout << "\n";
cout << "Numar de kilometrii : ";
cout << this->km;
cout << "\n";
cout << "Numarul de revizii este : ";
cout << this->revizii;
cout << "\n";
for (int i = 0; i < this->revizii; i++)
{
cout << "La revizia " << i + 1 << " , masina a avut " << this-
>rev[i] << " km \n";
}
cout << "Anul de favricatie este " << this->an_fab[0] << this-
>an_fab[1] << this->an_fab[2] << this->an_fab[3] << "\n";
}
friend ostream& operator<<(ostream& out, utilaj& u)
{
out << "Tipul utilajului este : ";
out << u.sasiu;
out << "\n";
out << "Numarul autoturismului este : ";
out << u.numar;
out << "\n";
out << "Numar de kilometrii : ";
out << u.km;
out << "\n";
out << "Numarul de revizii este : ";
out << u.revizii;
out << "\n";
for (int i = 0; i < u.revizii; i++)
{
out << "La revizia " << i + 1 << " , masina a avut " << u.rev[i]
<< " km \n";
}
out << "Anul de favricatie este " << u.an_fab[0] << u.an_fab[1] <<
u.an_fab[2] << u.an_fab[3] << "\n";
return out;
}
friend istream& operator>>(istream& in, utilaj& u)
{
int x;
cout << "Tipul utilajului este : ";
in >> u.sasiu;
cout << "\n";
cout << "Numarul autoturismului este : ";
in >> u.numar;
cout << "\n";
cout << "Numar de kilometrii : ";
in >> u.km;
cout << "\n";
cout << "Numarul de revizii este : ";
in >> u.revizii;
cout << "\n";
if (u.rev != NULL) delete[] u.rev;
u.rev = new int(u.revizii);
for (int i = 0; i < u.revizii; i++)
{
cout << "La revizia " << i + 1 << " , masina a avut "; in >>
u.rev[i]; cout << " km \n";
}
cout << "Anul de fabricatie este "; in >> x;
u.an_fab[3] = x % 10;
x = x / 10;
u.an_fab[2] = x % 10;
x = x / 10;
u.an_fab[1] = x % 10;
x = x / 10;
u.an_fab[0] = x % 10;
cout << "\n";
return in;
}
operator int()
{
return (int)(this->km);
}
int operator[](int i)
{
if (i > -1 && i < this->revizii)
return this->rev[i];
return 0;
}
friend int operator+(utilaj& u, int i)
{
return u.an_fab[0] * 1000 + u.an_fab[1] * 100 + u.an_fab[2] * 10 +
u.an_fab[3] + i;
}
int operator-(utilaj& u)
{
return this->an_fab[0] * 1000 + this->an_fab[1] * 100 + this->an_fab[2]
* 10 + this->an_fab[3] - u.an_fab[0] * 1000 - u.an_fab[1] * 100 - u.an_fab[2] * 10
- u.an_fab[3];
}

utilaj& operator=(utilaj& u)
{
int i;
this->sasiu = u.sasiu;
strcpy(this->numar, u.numar);
this->revizii = u.revizii;
if (this->rev != NULL) delete[] this->rev;
this->rev = new int(this->revizii);
for (i = 0; i < u.revizii; i++)
this->rev[i] = u.rev[i];
for (i = 0; i < 4; i++)
this->an_fab[i] = u.an_fab[i];

this->km = u.km;
return *this;
}
bool operator>(utilaj& u)
{
if (this->km > u.km) return 1;
return 0;
}
bool operator! ()
{
if (this->rev != NULL) return 0;
return 1;
}
friend utilaj& operator++(utilaj& u, int i)
{
static utilaj& aux = u;
u.km++;
return aux;
}
friend utilaj& operator--(utilaj& u, int i)
{
static utilaj& aux = u;
u.km--;
return aux;
}
friend utilaj& operator++(utilaj& u)
{

u.km++;
return u;
}
friend utilaj& operator--(utilaj& u)
{
u.km--;
return u;
}

};
int utilaj::gestiune = 0;
int main()
{
utilaj u;
cout << u;
//cin >> u;
u.afisare();
utilaj u1, u2;
cout << "\n";
u1 = u;
cout << u + 1 << " " << u1 - u << " " << int(u) << "\n";
u2 = u++;
cout << u2 << " \n";
u2 = ++u;
cout << u2 << " \n";
u2 = --u;
cout << u2 << " \n";
u2 = u--;
cout << u2 << " \n";

int i;
animal a;
a.afisare();
cout << "\n\n\n\n";
a.setgreutate(555);
a.setrasa("PSD");
char* numea;
numea = new char[strlen("dancila")];
strcpy(numea, "dancila");
a.setnume(numea);
a.setid(1, 5);
int produsi = 3;
int* gr;
gr = new int[produsi];
for (i = 0; i < produsi; i++)
{
gr[i] = 300 + i * 30 + 5;

}
a.setgreutatiprod(gr, produsi);
cout << a;
animal a1;
a1 = a;
cout << "\n\n\n\n222222222222222222222222222222222222222222\n\n\n\n";
cout << a1;
animal a2(a);

cout << "\n\n\n\n222222222222222222222222222222222222222222\n\n\n\n";


cout << a2 << "\n";
cout << a2[1] << " " << a2 + 1 << " " << a2 - a1 << "\n";//apel indexare , +
si -
animal a3;
// cin >> a3; // apel>>
cout << (a2 == a2) << '\n' << (a > a2) << "\n " << (!a) << "\n";
a2 = a++;
cout << a2 << " \n";
a2 = ++a;
cout << a2 << " \n";
a2 = --a;
cout << a2 << " \n";
a2 = a--;
cout << a2 << " \n";
cout << int(a) << "\n";

//3

teren t;
t.afisare();

//acum apelam toate functiile set si get pentru clasa teren

string as = "secara";
t.setcultura(as);
cout << t.getcultura() << "\n";
int codn = 9, poz = 1;
t.setcod(codn, poz);
for (i = 0; i < 3; i++)
cout << t.getcod(i);
cout << "\n";
int* prod;
int aniv;
aniv = 4;
prod = new int[aniv];
for (i = 0; i < aniv; i++)
prod[i] = i * 1000 + 500 + i * 30;
t.setproductie(prod, aniv);
cout << "Noua vechime_teren este " << t.getvechime() << " iar productiile
sunt :\n";
for (i = 0; i < aniv; i++)
{
cout << "productia " << i + 1 << " : " << t.getproductie(i) << "\n";
}

char sir[20], * sirp, * x;


strcpy(sir, "Bucuresti");
sirp = sir;
t.setlocalitate(sir);
x = t.getlocalitate();
cout << x << "\n";// o mica verificare sa vedem daca merge setlocalitate si
getlocalitate :D
float supra;
supra = 7.55;
t.setsuprafata(supra);
cout << "Noua suprafata este : " << t.getsuprafata() << "\n";
int costn;
costn = 12345;
t.setcost(costn);
cout << "Noul cost este : " << t.getcost() << "\n";
teren::setparcela(4);
cout << "aceasta este parcela :" << teren::getparcela() << "\n";

teren t1;
t1.afisare();
t1 = t;
cout << t1;
//pana acum merge si supraincarcarea lui = , si alui <<
teren t2, t3;
//cin >> t2;
cout << t2;
cout << "\n\n\n";
cout << (t2 == t) << " " << (t2 == t3) << "\n" << (t2 > t) << " " << (!t) <<
"\n";
t2 = t++;
t1 = ++t;
cout << t2 << "\n\n\n\n" << t1;
t2 = t--;
t2 = --t;
cout << t2 << "\n\n\n\n" << t1 << "\n\n\n\n";
cout << "\n2222222222222222222222222222222222222222222222222\n\n\n\n\n";
cout << int(t);//operator cast
cout << "\n2222222222222222222222222222222222222222222222222\n\n\n\n\n";
cout << t - t1 << "\n";
cout << 1 + t1 << "\n";
cout << t1 + 3 << "\n";
cout << "\n2222222222222222222222222222222222222222222222222\n\n\n\n\n";
cout << t1[1];

Das könnte Ihnen auch gefallen