Program ułamek - kompiluje ale działa niepoprawnie

0
<code class="cpp"><code class="cpp">Witam. Mam problem z programem dodającym ułamki. Kompiluje się ale przypisuje jakies smieci danym składowym obiektu klasy ułamek. Po wpisaniu cyfr do w1 i w2 przykładowo 1,3,5,7 , potem po wyswietleniu ich  okazuje sie, ze jest tam liczba przykładowo 198586322. Nie wiem co robić. Prosze o pomoc. Oto kod:


#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cmath>
using namespace std;
class ulamek
{
	public:
		int licznik;
		int mianownik;
		ulamek(int a=1, int b=1)
		{
			
		}
		
		int nominator(ulamek fraction);
		int denominator(ulamek fraction);
		ulamek dodaj(ulamek fraction1, ulamek fraction2);
};
ulamek ulamek::dodaj(ulamek fraction1, ulamek fraction2)
{
	
	ulamek suma(1, 1);
	suma.mianownik=fraction1.mianownik*fraction2.mianownik;
	suma.licznik=(suma.mianownik/fraction1.mianownik)*fraction1.licznik+(suma.mianownik/fraction2.mianownik)*fraction2.licznik; 
	return suma;
}
int ulamek::nominator(ulamek fraction)
{
	cout<<fraction.licznik<<endl;
}
int ulamek::denominator(ulamek fraction)
{
	cout<<fraction.mianownik<<endl;
}


ostream & operator<<(ostream & ekran, ulamek w)
{
	ekran<<w.licznik<<"/"<<w.mianownik;
	return ekran;
}
istream & operator>>(istream & klawiatura, ulamek z)
{
	cout<<"Licznik:"<<endl;
	klawiatura>>z.licznik;
```cpp
 
``` cout<"Mianownik:"<endl; klawiatura="klawiatura">>z.mianownik; return klawiatura; }

int main()
{

ulamek w1;
ulamek w2;
cout<<"Podaj ulamek w1:"<<endl;
cin>>w1;
cout<<"Podaj ulamek w2:"<<endl;
cin>>w2;
cout<<"Pokaz licznik w1:"<<w1.licznik<<" "<<"Pokaz mianownik w1:"<<w1.mianownik<<endl;
cout<<"Pokaz licznik w2:"<<w2.licznik<<" "<<"Pokaz mianownik w2:"<<w2.mianownik<<endl;

cout<<"Suma:"<<endl;
cout<<w1.dodaj(w1,w2)<<endl;

}


0

Tyle masz problemów w twoim kodzie że szybciej machnąć nowy niż wypisać te problemy. Znacznie prościej:

#include <iostream>
using namespace std;

class ulamek
  {
   public:
   int licznik;
   int mianownik;
   ulamek(int licznik=0, int mianownik=1):licznik(licznik),mianownik(mianownik) { norm(); }
   void norm() {} // dzieli licznika i mianownik przez nwd z licznika i mianownika, jeżeli mianownik jest ujemny to mnoży licznik i mianownik przez -1
  };

ulamek ulamek::dodaj(const ulamek &a,const ulamek &b)
  {
    return ulamek(a.licznik*b.mianownik+b.licznik*a.mianownik,a.mianownik*b.mianownik);
  }

ostream &operator<<(ostream &sout,const ulamek &u)
  {
   return sout<<w.licznik<<'/'<<w.mianownik;
  }

istream &operator>>(istream &sin,ulamek &z)
  {
   return sin>>w.licznik>>w.mianownik;
  }

int main()
  {
   ulamek a,b;
   cout<<"Podaj ulamek w1: ";
   cin>>a;
   cout<<"Podaj ulamek w2: ";
   cin>>b;
   cout<<"Suma: "<<a<<" + "<<b<<" = "<<(a+b)<<endl;
   return 0;
  }

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