Błąd w funkcji z klasą..

Odpowiedz Nowy wątek
2011-09-02 15:11
0
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;
}
edytowany 2x, ostatnio: madmike, 2011-09-02 18:30
A może podał byś ten błąd, kod dał w tagi i porządnie go sformatował? Poza tym to chyba nie jest C#, co? - Endrju 2011-09-02 15:16

Pozostało 580 znaków

2011-09-02 15:32
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/refe[...]tream/ostream/operator%3C%3C/

Pozostało 580 znaków

2011-09-02 22:07
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();
}
 
edytowany 2x, ostatnio: michalo2882, 2011-09-03 08:45
mianownik powinien mieć domyślną wartość 1 a nie 0, bo przy zerze ci ułamek eksploduje. - Azarien 2011-09-02 23:28

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0