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,00000000001
in 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.00000000001
steht, 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)