Witam!
Mam taki problem z programem:
#include <iostream>
using namespace std;
int nwd(int a, int b)
{
while(a!=b)
{
if(a>b)
a-=b;
else
b-=a;
}
return a;
}
int nww(int mian1, int mian2, int nwd1)
{
return mian1*mian2/nwd1;
}
class Ulamek
{
public:
int licznik;
int mianownik;
Ulamek(int liczn,int mianow);
Ulamek();
double wartosc();
void drukuj();
void dodaj(Ulamek u);
void dodaj(int liczba);
};
Ulamek::Ulamek(int liczn, int mianow)
{
licznik = liczn;
mianownik = mianow;
}
Ulamek::Ulamek()
{
cout << endl;
cout << "Podaj wartosc licznika:";
cin >> licznik;
cout << "Podaj wartosc mianownika:";
cin >> mianownik;
while(mianownik==0)
{
cout << endl;
cout << "Podaj mianownik rozny od zera!";
cin >> mianownik;
};
}
double Ulamek::wartosc()
{
return (double)licznik/mianownik;
}
void Ulamek::drukuj()
{
cout << endl;
cout << licznik <<" / "<<mianownik <<" = "<< wartosc();
}
void Ulamek::dodaj(Ulamek u)
{
int temp = mianownik;
int nwd1 = nwd(mianownik,u.mianownik);
int nww1 = nww(mianownik,u.mianownik,nwd1);
mianownik = nww1;
licznik = (nww1/temp) *licznik;
u.licznik = (nww1/u.mianownik) *u.licznik;
licznik = licznik + u.licznik;
}
void Ulamek::dodaj(int liczba)
{
int licznik1;
int mianownik1;
mianownik1 = mianownik;
licznik1 = mianownik1* liczba;
licznik = licznik+licznik1;
}
int main()
{
Ulamek a(3,5);
Ulamek b;
a.drukuj();
b.drukuj();
a.dodaj(b);
a.drukuj();
a.dodaj(3);
a.drukuj();
return 0;
}
Tutaj screen:
http://www.fotosik.pl/zdjecie/a5bfd7cdd0d9c713
Chodzi mi dokładnie o to, że w operacji dodawania ułamka z ułamkiem nadpisuje mi licznik i mianownik i potem jak dodaje ułamek z liczbą wychodzi zły wynik.
Z góry dzięki!