Download as pdf or txt
Download as pdf or txt
You are on page 1of 5

#include <iostream>

using namespace std;


class Rumegatoare
{
private:
string nume;
int cantitate_l;
int procent_g;
public:
void SetNume(string n)
{
this->nume=n;
}

string GetNume() const


{
return this->nume;
}

void SetCantitate(int c)
{
this->cantitate_l=c;
}

int GetCantitate() const


{
return this->cantitate_l;
}

void SetProcent(int p)
{
this->procent_g=p;
}

int GetProcent() const


{
return this->procent_g;
}

Rumegatoare()
{
this->nume="Rumegator";
this->cantitate_l=0;
this->procent_g=0;
}

Rumegatoare(string n,int c, int p)


{
this->nume=n;
this->cantitate_l=c;
this->procent_g=p;
}

virtual int Cantitate_Smantana()=0;

friend istream &operator>>(istream &in,Rumegatoare &R)


{
in>>R.nume>>R.cantitate_l>>R.procent_g;
return in;
}

friend ostream &operator<<(ostream &out,Rumegatoare &R)


{
out<<R.nume<<" "<<R.cantitate_l<<" "<<R.procent_g<<endl;
return out;
}

bool operator==(Rumegatoare &R1)


{
if(R1.nume==this->nume && R1.cantitate_l==this->cantitate_l &&
R1.procent_g==this->procent_g)
{
return true;
}
else{
return false;
}

};

class Vaca:public Rumegatoare


{
public:
Vaca()
{

}
Vaca(string n,int c,int p):Rumegatoare(n,c,p)
{

}
int Cantitate_Smantana()
{
return (this->GetCantitate()*(10*this->GetProcent()))/100;
}

Vaca operator+(const Vaca &R )


{
Vaca rez;
if(this->GetNume()==R.GetNume()){
rez.SetCantitate((this->GetCantitate()+R.GetCantitate())/2);
rez.SetProcent((this->GetProcent()+R.GetProcent())/2);
rez.SetNume(this->GetNume());
}
return rez;

Vaca operator=( Vaca &R)


{
this->SetNume(R.GetNume());
this->SetCantitate(R.GetCantitate());
this->SetProcent(R.GetProcent());
}
};

class Oaie:public Rumegatoare


{
public:
Oaie()
{

}
Oaie(string n,int c,int p):Rumegatoare(n,c,p)
{

}
int Cantitate_Smantana()
{
return (this->GetCantitate()*(10*this->GetProcent()))/100;
}

Oaie operator+(const Oaie &R )


{
Oaie rez;
if(this->GetNume()==R.GetNume()){
rez.SetCantitate((this->GetCantitate()+R.GetCantitate())/2);
rez.SetProcent((this->GetProcent()+R.GetProcent())/2);
rez.SetNume(this->GetNume());
}
return rez;

}
Oaie operator=( Oaie &R)
{
this->SetNume(R.GetNume());
this->SetCantitate(R.GetCantitate());
this->SetProcent(R.GetProcent());
}
};

class Capra:public Rumegatoare


{
public:
Capra()
{

}
Capra(string n,int c,int p):Rumegatoare(n,c,p)
{

}
int Cantitate_Smantana()
{
return (this->GetCantitate()*(10*this->GetProcent()))/100;
}
Capra operator+(const Capra &R )
{
Capra rez;
if(this->GetNume()==R.GetNume()){
rez.SetCantitate((this->GetCantitate()+R.GetCantitate())/2);
rez.SetProcent((this->GetProcent()+R.GetProcent())/2);
rez.SetNume(this->GetNume());
}
return rez;

Capra operator=( Capra &R)


{
this->SetNume(R.GetNume());
this->SetCantitate(R.GetCantitate());
this->SetProcent(R.GetProcent());
}
};

int main()
{
Capra A("Capra1",800,5);
Capra D("Capra1",800,5);
Capra B("Capra1",500,4);
Capra Cr("Snitzel",900,6);
cout<< Cr<<endl;
Capra C=A+B;
Capra G=A;
cout<<G;
if(A==C)
{
cout<<"Egale"<<endl;
}
cout<<C;
cout<<C.Cantitate_Smantana()<<endl;
return 0;
}

You might also like