class Wymierna{
public:
Wymierna(int licznik, int mianownik)
{Licznik=licznik; Mianownik=mianownik;};
const Wymierna operator*(const Wymierna& x) {return *this;};
int Licznik, Mianownik;
void Out(){ cout<<Licznik<<"/"<<Mianownik,,endl;
};
int main()
{
Wymierna jednaOsma(1,8);
Wymierna jednaDruga(1,2);
Wymierna wynik = jednaOsma*jednaDruga;
cout<<wynik.Out();
wynik = wynik*jednaDruga;
cout<<wynik.Out();
wynik = 2*jednaDruga;
cout<<wynik.Out();
wynik = jednaDruga*2;
cout<<wynik.Out();
return 0;
}
0
0
Od czego zacząć... może od tego że wszystko źle?
implementacja operatora * błędna
implementacja Out() niepotrzebna
użycie Out() błędne
operator * powinien wykonać mnożenie liczb wymiernych
metoda out nie ma sensu, zgodnie ze sztuką zaimplementuj operator << http://www.cplusplus.com/reference/iostream/ostream/operator%3C%3C/
0
To powinno wyglądać tak:
#include <iostream>
class Wymierna
{
public:
Wymierna(int Licznik = 0, int Mianownik = 1)
: mLicznik(Licznik), mMianownik(Mianownik) {}
Wymierna operator*(const Wymierna& arg) const
{
Wymierna temp;
temp.mLicznik = mLicznik * arg.mLicznik;
temp.mMianownik = mMianownik * arg.mMianownik;
return temp;
}
Wymierna operator*(const int arg) const
{
Wymierna temp;
temp.mLicznik = mLicznik * arg;
temp.mMianownik = mMianownik;
return temp;
}
int mLicznik, mMianownik;
void Out()
{
std::cout << mLicznik << "/" << mMianownik << std::endl;
}
};
Wymierna operator*(int liczba, const Wymierna& ulamek)
{
return ulamek * liczba;
}
int main()
{
Wymierna jednaOsma(1,8);
Wymierna jednaDruga(1,2);
Wymierna wynik = jednaOsma*jednaDruga;
wynik.Out();
wynik = wynik*jednaDruga;
wynik.Out();
wynik = 2*jednaDruga;
wynik.Out();
wynik = jednaDruga*2;
wynik.Out();
}