L
So, wenn ichs richtig sehe, dann funktioniert jetzt alles so, wie ichs haben wollte. Der Fehler lag nicht in der Funktion sonderm (natürlich :)) woanders, ich hab ihn auch gefunden, hab aber noch mal ein paar Fragen.
ich hab eine Methode "kuerzen()", die zB nach der Addition zweier Brüche in der Methode "addieren(...)" aufgerufen wird, das sieht bei mir so aus:
void bruch::addieren(int z, int n)
{
if(nenner == n)
{
zaehler += z;
}
else
{
int kgv = nenner*n;
zaehler *= n;
z *= nenner;
zaehler += z;
nenner = kgv;
}
bruch::kuerzen();
}
1. ist die Syntax bei bruch::kuerzen() so korrekt oder könnte ich auch nur kuerzen() schreiben?
2. wenn ich kuerzen() an dieser Stelle aufrufe, muss kuerzen() dann vor addieren(...) definiert sein? Oder ist das egal?
3. angenommen ich möchte zwei Brüche addieren, da rufe ich in meiner Main-Funktion folgendes auf:
int main()
{
bruch br1, br2;
einlesen(br1.zaehler, br1.nenner);
einlesen(br2.zaehler, br2.nenner);
br1.addieren(br2.zaehler, br2.nenner);
int zahl = br1.umwandeln();
ausgeben(br1.zaehler, br1.nenner, zahl);
return 0;
}
Funktioniert soweit auch wie gewünscht. Jetzt möchte ich aber, dass der Anwender bestimmt, welche Operation er vornimmt, soll heißen, dass er das Rechenzeichen eingeben kann. Dazu hatte ich mir folgendes überlegt:
int main()
{
bruch br1, br2;
einlesen(br1.zaehler, br1.nenner);
char zeichen;
cin >> zeichen;
einlesen(br2.zaehler, br2.nenner);
switch(zeichen)
{
case '+': br1.addieren(br2.nenner, br2.zaehler);
break;
case '-': br1.subtrahieren(br2.zaehler, br2.nenner);
break;
}// ich beschränk mich mal auf '+' und '-'
int zahl = br1.umwandeln();
ausgeben(br1.zaehler, br1.nenner, zahl);
return 0;
}
Wenn ich das Programm aber so ausführen lasse, rechnet es nicht korrekt, weiß jemand von euch warum?
Danke!