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.


Anmelden zum Antworten