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=2wurzelinhalt=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 0float 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=(-1zahlc)/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.