Wurzel ziehen mit Hilfe von sqrt, wo liegt mein Fehler?



  • Hallo!

    Ich hab folgendes Problem.

    Ich möchte aus einer Variablen die Wurzel ziehen.

    Ich habe zuvor einer Variablen einen Wert zugewiesen.

    zB. zahla=8
    zahlb=2

    wurzelinhalt=zahla/zahlb (datentyp float)

    ...also ich hab dann 4 in "wurzelinhalt", das gibt er auch einwandfrei aus, wenn ich das mit printf ausgebe.

    nun möchte ich die Wurzel aus wurzelinhalt haben

    also habe ich das mit :

    wurzel = sqrt(wurzelinhalt); (datentyp double)

    versucht, da gibts aba immer fehler, wenn ich das Programm generiere.
    wenn ich statt wurzelinhalt die 4 direkt reinschreib klappt das, aber ich möchte ja die wurzel aus dem zuvor errechneten wert haben.

    Wär echt super wenn das jemand weiß.

    Danke, MfG
    Jan



  • Joker333 schrieb:

    da gibts aba immer fehler

    *seufz*

    Zeig den Code und die Fehlermeldungen.



  • Oki, hier ist er... hab die stellen mit nem 😡 markiert^^.
    Wenn ich das prog kompiliere, kommt keine fehlermeldung, aber beim generieren von der ausführbaren datei!? kommt ne meldung [...]undefined reference to `sqrt`!

    #include <stdio.h>
    #include <math.h>
    #define TRUE 1
    #define FALSE 0

    float zahla, zahlb, zahlc, nullst1, nullst2, nullstlinear;
    float wurzelinhalt, zwischenrechnung, negiert;
    double wurzel;
    char menue;

    int main()

    {

    do
    {

    printf("Nullstellenberechnung - Polynom 2.Grades\n");
    printf("Normalform: ax²+bx+c\n\n");

    printf("Bitte den Wert für Variable a eingeben :\n");
    scanf ("%f", &zahla); //Eingabe "a";

    printf("Bitte den Wert für Variable b eingeben :\n");
    scanf ("%f", &zahlb); //Eingabe "b"

    printf("Bitte den Wert für Variable c eingeben :\n");
    scanf ("%f", &zahlc); //Eingabe "c"

    if (zahla==0 && zahlb==0 && zahlc==0)

    printf("Die Funktion: %.1fX²+%.1fX+%.1f hat als Lösung "
    "die Menge der Reellen Zahlen\n",zahla,zahlb,zahlc);

    else if (zahla==0 && zahlb==0 && (zahlc>0 || zahlc<0))

    printf("Die Funktion: %.1fX²+%.1fX+%.1f hat keine gültige Lösung!"
    ,zahla,zahlb,zahlc);

    else if (zahla==0 && zahlb!=0)
    {
    printf("Linearer Fall! ");

    if (zahlc < 0)
    {
    nullstlinear=(-1zahlc)/zahlb;
    printf("X1 = %.3f",nullstlinear);
    }
    else
    {
    nullstlinear=(-1
    zahlc)/zahlb;
    printf("X1 = %.3f",nullstlinear);
    }
    }

    else

    {
    printf("Funktion: %.1fX²+%.1fX+%.1f\n\n",zahla,zahlb,zahlc);
    printf("\n\nNullstellenberechnung:\n");

    zwischenrechnung=-1*(zahlb/(2*zahla));

    printf("Zwischenergebnis - Zwischenrechnung: %.3f\n\n",zwischenrechnung);

    wurzelinhalt=(zahlb*zahlb-4*zahla*zahlc)/(4*zahla*zahla);

    printf("Zwischenergebnis - Wurzelinhalt: %.3f\n\n",wurzelinhalt);

    if (wurzelinhalt < 0) //Bei negativem Wurzelinhalt:
    {
    negiert=-1*wurzelinhalt; //Negation
    printf("Zwischenergebnis - Wurzelinhalt Negiert: %.3f\n\n",negiert);
    wurzel = sqrt(negiert); // 😡
    printf("Zwischenergebnis - Wurzelauflösung: %.3f\n\n",wurzel);
    }
    else
    {
    wurzel = sqrt(wurzelinhalt); // 😡
    printf("Zwischenergebnis - Wurzelauflösung: %.3f\n\n",wurzel);
    }

    if (wurzelinhalt < 0) //Bei negativem Wurzelinhalt:
    {
    printf("X1=%.3f + Wurzel aus 1 * %f\n",zwischenrechnung,wurzel);
    //Ausg. X1
    printf("X2=%.3f - Wurzel aus 1 * %f\n",zwischenrechnung,wurzel);
    //Ausg. X2
    }
    else //Bei positivem Wurzelinhalt:
    {
    nullst1=zwischenrechnung+wurzel;
    nullst2=zwischenrechnung-wurzel;
    printf("X1=%.3f\n",nullst1); //Ausg. X1
    printf("X2=%.3f\n",nullst2); //Ausg. X2
    }

    }

    getchar();
    printf("\n\n\n\n Programm neustarten (j) oder (n) ? ");//Abfr.: Neustart
    scanf("%c",&menue);
    getchar();

    if (menue == 'n' )
    {
    printf("\n\n\n\n Auf Wiedersehen !");
    }
    else
    menue = menue;

    } while (menue == 'j' );

    }



  • Du musst die math library mitlinken.
    Wie das geht kommt auf deinen Compiler an.

    Beim gcc einfach -lm



  • Hmm...aber aus einer zahl direkt kann sqrt ja die wurzel ziehen, liegt es da wirklich dran?

    Werd ich mal versuchen ob ich da meinen Compiler einstellen kann...

    Danke schonmal!

    Mfg



  • Hab nun bei Anjuta (Kennt das evtl Jmd?) unter "Compiler and Linker Options" bei "Additional Libriaris" -lm hinzugefügt...nun läufts scheinbar.
    War das nu richtig so, sollte doch, oder?

    Danke euch!

    SORRY, nächstes mal poste ich ne Etage höher, hatte das übersehen. 😮


Log in to reply