wurzel programm problem
-
hallo habe ein Programm geschrieben, welches wurzeln zieht. Nun schmiert mir aber bei manchen zahlen mein Programm ab.
#include <stdio.h> /*Wurzel*/ double wurzel(double zahl) { double b,summe,c,quadrat; int count=1; b=zahl; while(1) { c=zahl; summe=0.5*(c+b/c); quadrat=summe*summe; if(quadrat<=b) { return summe; } count++; zahl=summe; } } int main() { double sqrt,zahl; printf("Bitte geben Sie die Zahl ein, von der Sie ie Wurzel wissen wollen: "); scanf("%lf",&zahl); sqrt=wurzel(zahl); printf("%0.5lf\n",sqrt); }
gebe ich 7 oder 5 ein schmiert es mir ab bei anderen zahlen funktioniert es hingegen blendend
-
Was heißt "schmiert ab"? Fehlermeldung? An welcher Stelle?
-
Bei mir geht es.
Wie äußert sich das abschmieren?
Dein main() muss noch einen Wert zurückgeben. Am besten 0.
-
er zeigt keine fehler hängt sich einfach auf wenn ich bestimmte Zahlen eingebe. Bei anderen gecht er weiter und gibt das printf, also dementsprechend das ergebniss aus
-
Vermutlich Rechenungenauigkeit von double. Veruschs mal mit
if (quadrat <= b + 0.0005) return ..
Edit:
Oder versuchs mit long double.
-
mit:
cooky451 schrieb:
Vermutlich Rechenungenauigkeit von double. Veruschs mal mit
if (quadrat <= b + 0.0005) return ..
klappts nun perfekt, danke
-
- '==' '<=' '>=' mit Fließkommazahlen sind immer ziemlich diffizil
- verwende keine Variablennamen, für die es gleichnamige Standard Bibliothekfunktionen gibt ( sqrt ! ) auch wenn du math.h nicht einbindest