Programmier Hilfe
-
Hi miteinander.
Ich bin ein relativer C Neuling und will ein Programm schreiben das mit dem Iterationsverfahren die Quadratwurzehl einer eingegeben Zahl a ausrechnet.
Nun soll das Programm die Werte von x(0) x(1) bis x(10) ausgeben (mit einer for schleife).
Das habe ich bereits geschrieben allerdings kommt nur sinnlose sachen raus(0.00000 etc)
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <stdio.h> main() { int a , i; float y , x=1.0 ; printf("Geben sie eine Zahl ein:\n"); scanf("%d",&a); for(i=0;i<10;i++){ y=(1/2)*(x+(a/x)); printf("%d\t%f\n",x,y); x=y; } system("PAUSE"); return(0); }
ist mein momentaner Code.
Wäre über jede Hilfe dankbar.
mfg
Szimo
-
Versuche es mit 1.0/2.0 bei 1/2 rechnest du mit integer.
Außerdem steht in deiner printf Zeile einmal %d und einmal %f.
Ich würde grundsätzlich mit double rechnen statt mit float.
Gruß,
Andreas
-
Das hier
(1/2)
ist schonmal falsch, da es immer 0 ergibt. Das ist eine Ganzzahlendivision, bei der der Rest (Grundschule, erinnere dich! ) ignoriert wird. Die 2 passt 0 mal in 1 rein. Probier's mal mit "1.0/2.0".
Übrigens sollte es
int main()
lauten.
-
Ok klar Hab ich ganz außer acht gelassen ....
Danke dafür erstmal ..Jedoch kommt im Ergebniss des Programmes immer der Wert 1 zu wenig raus! also statt 1,5 kommt 0,5 raus.
Da noch nen Tipp? (lieber tipp als lösung^^ wills ja lernen)mfg
-
Also bei mir funktioniert dein Programm, wie es soll. srqt von 4 ist 2, von 81 ist 9 usw. Klappt wunderbar...
-
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <stdio.h> int main() { double y , x=1.0 , i , a ; printf("Geben sie eine Zahl ein:\n"); scanf("%f",&a); for(i=0;i<10;i++){ y=(1.0/2.0)*(x+(a/x)); printf("%f\t%f\n",i+1,y); x=y; } system("PAUSE"); return(0); }
vll hab ich ja wieder scheiße gebaut^^
-
Für double-Werte bitte noch in printf statt %f %lf verwenden.
-
... und für integer-Werte natürlich %d.
Du gibst ja jetzt statt "x" "i+1" aus.
Hatte ich gerade übersehen.