Problem mit der Ausgabe
-
@Ichwerdennsonst sagte in Problem mit der Ausgabe:
dieser Code gibt einfach nichts aus!
Da er gar nicht übersetzt wird, ist das auch kein Wunder.
-
Oh das ist blöd, aber was interpretiert der Compiler denn mit einem Komma in der Weilschleife?? Warum kann ich das Programm ausführen aber ohne Ausgabe?
-
@Ichwerdennsonst sagte in Problem mit der Ausgabe:
aber was interpretiert der Compiler denn mit einem Komma in der Weilschleife??
while(true)
-
@Ichwerdennsonst sagte in Problem mit der Ausgabe:
Oh das ist blöd, aber was interpretiert der Compiler denn mit einem Komma in der Weilschleife?? Warum kann ich das Programm ausführen aber ohne Ausgabe?
Siehe https://en.cppreference.com/w/cpp/language/operator_other#Built-in_comma_operator
Im Endeffekt führst du den Teil vor dem Komma aus und scheißt das Ergebnis weg und verwendest dann den Teil hinter dem Komma. Und hinter dem Komma steht
00000000001. Das ist das gleiche wie1. Alsowhile(1). Hättest du die0,00000000001in eine Konstante oder Variable gelegt und damit benannt, wäre das gleich viel lesbarer.Also sowas wie
double epsilon = 0.00000000001;Damit wäre das Problem auch nicht aufgetreten - denn einmal hast du die Zahl ja korrekt geschrieben. Und wenn du Compiler-Warnungen anstellst, dann sagt dir der Compiler doch sogar, dass der geamte unterstrichene Teil, alsopow(Ergebnis,3)-2>0.00000000001&&pow(Ergebnis,3)-2>-0, eine unbenutzte Expression ist. Lies Warnungen! Behebe alle Warnungen!PS: Ein Sourcecode-Formatierer wie clang-format hätte wahrscheinlich auch geholfen, hinter jedes Komma gehört ein Leerzeichen. Dann fällt auch sofort auf, dass da nicht
0.00000000001steht, sondern0, 00000000001. Oder scheib doch einfach1e-11, dann braucht man die Nullen nicht zu zählen.
-
@wob sagte in Problem mit der Ausgabe:
...
Im Endeffekt führst du den Teil vor dem Komma aus und scheißt das Ergebnis weg und verwendest dann den Teil hinter
...MMD!
-
@DocShoe War unabsichtlich. Ich lasse es aber mal so stehen, passt ja auch so ohne m

-
Schon gut. Ich fand nur eine Konstante wäre ein bisschen überflüssig, besonders wo Double so ungenau ist. Aber läuft jetzt
-
@Ichwerdennsonst sagte in Problem mit der Ausgabe:
Ich fand nur eine Konstante wäre ein bisschen überflüssig, besonders wo Double so ungenau ist.
Hä? Wo ist der Zusammenhang?
-
@wob sagte in Problem mit der Ausgabe:
Hä? Wo ist der Zusammenhang?
Ich müsste mit dem Ding mindestens einmal rechnen und das könnte die Genauigkeit überschritten haben;Sprich 1.+0.00000000001 ist vielleicht schon etwas anderes als es mathematisch gesund ist. Dann lass ich lieber richtig abprüfen.
-
@Ichwerdennsonst
Es mach genau keinen Unterschied ob duwhile(pow(Ergebnis,3)-2 > 0.00000000001)schreibst, oder
constexpr double eps = 0.00000000001; while(pow(Ergebnis,3)-2 > eps)