Hallo, ich habe versucht, dass Newtonverfahren in C zu programmieren. Ich wollte nur, dass es für einen eingegebenen Startwert die nächsten Werte ausrechnet. Dafür habe ich die Funktion rekursiv implementiert. Die Funktion soll rekursiv aufgerufen werden, wenn 'j' eingeben wurde. Das Problem ist, dass die if Abfrage anscheinend immer mit false ausgewertet wird in der Funktion. Vielleicht weiß ja einer von euch, was ich falsch mache. Ich schätze mal, dass es an der Rekursion liegt. Die Ausgabe funktioniert und die Zahlenwerte sind richtig berechnet.
1 | printf("%i. x%i = %le Fehler x%i-x%i = %le\n",n,n,x,n,n-1,fabs(x-x0)); |
2 | #if 1
|
3 | // C99 Modus. Ohne C99 eingabe beim Funktionsstart definieren
|
4 | char eingabe = getchar(); |
5 | printf("DEBUG: %c - %c\n", eingabe, tolower(eingabe)); |
6 | if(tolower(eingabe)=='j'){ |
7 | #else
|
8 | if(tolower(getchar())=='j'){ |
9 | #endif
|
Oder auf deutsch: Wenn du nicht weißt, warum der Vergleich eines Wertes mit einer Konstanten immer false ergibt, dann rate nicht rum, sondern lass dir die Dinge ausgeben. Dazu hast du nämlich (auch) einen Monitor, damit man da was hinschreiben kann. Und dann brauchst du nicht mehr vermuten oder raten, sondern siehst weiß auf schwarz was Sache ist.
Ok, habe das Problem gelöst. Ich hatte vergessen, dass scanf das \n nicht mehr aufnimmt. Trotzdem danke für die Tips. Konnte natürlich nix eingelesen werden.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.