Anfängerfrage... warum gibt die Konsole nichts aus?
-
#include <iostream> using namespace std; double euler() { double sum=1; for(double term=1; term >= 0.000005; term=term*(term+1)){ sum=sum+(1/term); } return sum; } int main() { cout << "die eulersche zahl auf fünf nachkommastellen ist: " << euler() << endl; system("PAUSE"); return 0; }dieses programm (berechnung der eulerschen zahl auf fünf nachkommastellen genau) kann ich problemlos kompilieren, allerdings wird dann beim ausführen nichts ausgegeben, also in der konsole wird nicht wie vorgesehen die eulersche zahl auf fünf nachkommastellen genau ausgegeben, sondern es passiert nichts... was ist an meinem programmcode falsch??
-
Du hast da eine Endlosschleife, weil deine Schleifenbedingung niemals False wird. term ist von Anfang an größer als 0.000005, und wird immer größer.
-
Die Variable term geht nach der zwölften Iteration nach inf, d.h. du hast eine Endlosschleife.
-
ok, danke für die antworten, ich hab das ganze programm nun etwas umgeschrieben, nun funktioniert alles richtig:
#include <iostream> using namespace std; double euler() { double sum=1; double term=1; int i=1; while((1/term) > 0.000005){ sum=sum+(1/term); term=term*(++i); } return sum; } int main() { cout << "die eulersche zahl auf fünf nachkommastellen ist: " << euler() << endl; system("PAUSE"); return 0; }was mir aber selbst nicht ganz einleuchtet, ist die tatsache, dass die aufgabenstellung, die eulersche zahl auf fünf nachkommastellen genau zu berechnen , durch die abbruchbedinung
(1/term) > 0.000005)defininiert werden kann. ich hab das aus den musterlösungen nachgespickt und es funktioniert ja auch, aber wieso?? denn nur weil das nächste glied kleiner als 0.000005 ist, heisst das doch noch nicht, dass sich durch dessen addition zur gesamtsumme die eulersche zahl an der fünften stelle nicht ändern könnte? nehmen wir zum beispiel an, die gesamtsumme lautet momentan auf 2.7182499999, dann würde selbst die addition eines glieds von 0.000002 die fünfte nachkommastelle der zahl noch ändern...
ich hoffe, ich konnte mich einigermassen klar ausdrücken
, wär jedenfalls toll wenn mir das jmd erläutern könnte
-
Dann pack doch einfach noch eine 0 zwischen.

-
egal wieviel Nullen ich dazwischen pack, es kann doch in jedem Fall vorkommen, dass ein noch so kleines zusätzliches Glied die fünfte Nachkommastelle der Eulerschen Zahl noch verändert (natürlich nur einem extrem unglücklichen Fall, wenn die Eulersche Zahl mit den bisherigen Gliedern z.B. gerade 2.718289999999999999999999 lautet. Dann wird die fünfte Nachkommastelle nämlich erhöht auch wenn man nur ein zusätzliches Glied von 0.00000000000000000001 dazuaddiert!). Falls ich einen Überlegungsfehler mache, sagt es mir bitte
