👤
a fost răspuns

Care e problema in programul de mai jos? (C++)

#include
using namespace std;



class Fraction
{
private:
int num, numi;
public:
Fraction();
Fraction(int n, int d);
Fraction Suma(Fraction x);//suma
Fraction Diferenta(Fraction x);//diferenta
Fraction Produs(Fraction x);//produs
Fraction Impartire(Fraction x);//impartire
~Fraction();
void afisare();
int numitorcomun(int n, int d);

};
Fraction::Fraction()
{
num = 1;
numi = 1;
}
Fraction::Fraction(int n, int d)
{
num = n;
if (d==0)
{
cout << "eroare, nu se poate imparti la 0" << endl;
exit(0);
}
else
numi = d;
}
Fraction Fraction:: Suma(Fraction x)//suma
{
int n = num*x.numi+x.num*numi;
int d = numi*x.numi;
return Fraction(n/numitorcomun(n,d),d/numitorcomun(n,d));
}
Fraction Fraction:: Diferenta(Fraction x)
{
int n = num*x.numi-x.num*numi;
int d = numi*x.numi;
return Fraction(n/numitorcomun(n,d),d/numitorcomun(n,d));
}
Fraction Fraction:: Produs(Fraction x)
{
int n = num*x.num;
int d = numi*x.numi;
return Fraction(n/numitorcomun(n,d),d/numitorcomun(n,d));
}
Fraction Fraction:: Impartire(Fraction x)
{
int n = num*x.numi;
int d = numi*x.num;
return Fraction(n/numitorcomun(n,d),d/numitorcomun(n,d));
}
Fraction::~Fraction()
{
cout<<" \nFractie "< }

int numitorcomun(int n, int d)
{
int r;
while (d != 0)
{
r = n % d;
n = d;
d = r;
}
return n;
}
void Fraction::afisare()
{
if (numi == 1)
cout << num << endl;
else
cout << num << "/" << numi << endl;;
}


int main()
{
Fraction a(1,2);
Fraction b(1,4);
Fraction c;

c = a.Suma(b); // 3/4
c.afisare();

c = a.Diferenta(b); // 1/4
c.afisare();

c = a.Produs(b); // 1/8
c.afisare();

c = a.Impartire(b); // 2
c.afisare();

return 0;
}