Hoi! Mijn eerste bericht op dit forum :thumb:
Ik ben bezig een eigen class te programmeren, genaamd rational. rational is een class voor het werken met rationale getallen, d.w.z. getallen die te schrijven zijn als een breuk p/q met p en q gehele getallen.
rational heeft twee private int's genaamd teller en noemer (logisch), verder heeft rational ook nog een private member functie void vereenvoudig(), die een breuk zo veel mogelijk vereenvoudigd.
ik heb de volgende operatoren al met succes overloaded: +, -, *, /, ==, <, <=, >, >= en <<. ik zit alleen nog met de haren in het hoofd met de insertion operator >>.
ik wil dat rational met cin werkt, dus bijvoorbeeld:
ik heb de overloaded functies friends gemaakt van de class zodat ik niet met rational.get() hoef te werken, maar gewoon de private teller en noemer kan pakken. dit is tot nu toe mijn functie voor >> maar hij werkt nog niet goed:
ik test dit in mijn main met de volgende code:
maar als ik 1/2 invoer, krijg ik 49/50 op het scherm te zien :shocked:
iemand nog een idee hoe het dan anders kan?
alvast bedankt!
Ik ben bezig een eigen class te programmeren, genaamd rational. rational is een class voor het werken met rationale getallen, d.w.z. getallen die te schrijven zijn als een breuk p/q met p en q gehele getallen.
rational heeft twee private int's genaamd teller en noemer (logisch), verder heeft rational ook nog een private member functie void vereenvoudig(), die een breuk zo veel mogelijk vereenvoudigd.
ik heb de volgende operatoren al met succes overloaded: +, -, *, /, ==, <, <=, >, >= en <<. ik zit alleen nog met de haren in het hoofd met de insertion operator >>.
ik wil dat rational met cin werkt, dus bijvoorbeeld:
Code:
rational x;
cout << "Type een breuk: " << endl;
cin >> x;
ik heb de overloaded functies friends gemaakt van de class zodat ik niet met rational.get() hoef te werken, maar gewoon de private teller en noemer kan pakken. dit is tot nu toe mijn functie voor >> maar hij werkt nog niet goed:
Code:
istream& operator>>(istream& InputStream, rational& getal){
int inputTeller, inputNoemer;
inputTeller = InputStream.get();
InputStream.ignore(256,'/');
inputNoemer = InputStream.get();
getal.teller = inputTeller;
getal.noemer = inputNoemer;
return InputStream;
}
ik test dit in mijn main met de volgende code:
Code:
int main(){
rational x;
cout << "Wat wordt x? Type hieronder: " << endl;
cin >> x;
cout << "x = " << x << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
maar als ik 1/2 invoer, krijg ik 49/50 op het scherm te zien :shocked:
iemand nog een idee hoe het dan anders kan?
alvast bedankt!