#include <iostream>
using namespace std;
class Irrational
{
int numerator; //licznik
int denominator; //mianownik
public:
Irrational(int,int); //liczba niewymierna
void show(); //funkcja pokazujaca ulamek
int NWD(int a,int b); // funkcja zwracaj¹ca najwiekszy wspolny dzielnik dwoch liczb
void foreshorten(int &n,int &d); //funkcja skracajaca
int NWW(int a,int b); //funkcja znajdujaca najwieksza wskpolna wielokrotnosc
friend ostream &operator << (ostream &Exit,Irrational const &A);//funkcja pokazujaca ulamek(przeciazenie)
Irrational operator+(const Irrational &A);//funkcja dodajaca ulamek(przeciazenie)
void extension(int n,int d);//funkcja rozszezajaca ulamek
};
int main()
{
Irrational l(2,4),k(3,5);
Irrational w=l+k;
cout<<w;
return 0;
}
void Irrational::show()
{
cout<<numerator<<"/"<<denominator;
cout<<endl;
}
void Irrational::foreshorten(int &n,int &d)
{
int s=NWD(n,d);
n=n/s;
d=d/s;
return;
}
int Irrational::NWD(int a,int b)
{
while(a!=b)
{
if(a>b) {a-=b;}
else {b-=a;}
}
return a;
}
Irrational::Irrational(int n,int d)
{
numerator=n;
denominator=d;
if(denominator==0)
{
cerr<<"Blad...Nie dzielimy przez zero Losiu"<<endl;
throw "Blad";
}
else
{
extension(numerator,denominator);
foreshorten(numerator,denominator);
show();
return;
}
}
int Irrational::NWW(int a,int b)
{
return a/NWD(a,b)*b;
}
ostream &operator << (ostream &Exit,Irrational const &A)
{
Exit<<A.numerator<<"/"<<A.denominator;
return Exit;
}
Irrational Irrational::operator + ( Irrational const &A)
{
return Irrational(numerator+A.numerator,denominator+A.denominator);
}
void Irrational::extension(int n,int d)
{
int m = NWW(denominator,denominator);//tutaj zeby obliczalo NWW z dwoch mianownikow
int e = m/d;
numerator=e*n;
denominator=e*d;
return ;
}
zrobiłem czesc kodu do momentu ze niby zlicza dwa ulamki ale chcialbym zeby sprowadzalo do wspolnego mianownika nie wiem jak odniesc sie do dwoch mianownikow . Prosze o pomoc