leerer double return benötigt
-
Hallo,
ich möchte bei bestimmten Bedingungen einfach überhaupt nichts zurückgeben.
Mit Sum = void hat es nicht funktioniert. Bin noch neu in der Materie.Ich muss irgendeine Möglichkeit finden, dass die Funktion keinen Blödsinn ausgibt und auch keine 0.
double _stdcall CalculateInterestRate (double Anfangskapital, double Endkapital, double Anlagezeit) { double Sum, tmpSum1; if (Anfangskapital > Endkapital) { //Sum = void; goto JumpToEnd; } else { // noch nicht zu Ende gerechnet tmpSum1 = Endkapital / Anfangskapital; } JumpToEnd: return (Sum); }
-
Da du nur einen Typen zurückgeben kannst, musst du entweder einen komplexen Datentyp zurückgeben oder einen Parameter als Referenz übergeben.
Also zum Beispiel so:
bool CalculateInterestRate (double Anfangskapital, double Endkapital, double Anlagezeit, double &Ergebnis) { double Sum, tmpSum1; if (Anfangskapital > Endkapital) { // ich gehe mal davon aus das hier der Fehler zurückgegeben werden soll return false; } else { // noch nicht zu Ende gerechnet tmpSum1 = Endkapital / Anfangskapital; } Ergebnis = Sum; return true; } //[...] //Benutzung: double Result; if (CalculateInterestRate(10,20,30,Result)){ // weiterrechnen mit Result }else{ // Fehlerfall }
-
Bei double könntest du auch noch NaN-Werte oder infinity als Fehlerkennung zurückgeben.
-
In Deinem Fall wäre das Werfen einer Ausnahme wohl die „korrekteste“ Methode. Die Ausnahme signalisiert dann halt, dass hier ungültige Parameter übergeben wurden. „Nichts“ zurückgeben geht einfach nicht. 'void' ist ja auch kein Wert.
Nochmal ein Wort zum 'goto': Sowas ist Mist, mach das nicht. Das sorgt nur für unnötiges Chaos.
-
Danke an alle.
Werde die Funktion etwas umbauen.
Bei der Abfrage ist mir aufgefallen, dass es eventuell überhaupt nicht gut ist, einen negativen Zinssatz abzublocken, weil man z.B. damit ausrechnen will wieviel Prozent Verlust man gemacht hat. Wenn der User die Werte falsch eingeben sollte, hat er eben Pech gehabt.