Sqrt langage c
keurdange
Messages postés
720
Date d'inscription
Statut
Membre
Dernière intervention
-
keurdange Messages postés 720 Date d'inscription Statut Membre Dernière intervention -
keurdange Messages postés 720 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je suis débutant en programmation et j'aimerais un peu d'aide. Le programme suivant, me dit lors de la création du fichier exécutable (gcc -c trinome trinome.c), qu'il y a une erreur au niveau du sqrt. chose que je ne comprends pas.
#include<stdio.h>
#include<math.h>
float a,b,c,d,X,X1,X2,X,i;
main()
{
printf("Vous allez resoudre une équation du second dégré de la forme aX²+bX+c=0");
printf("Donner la valeur de a: ");
scanf("%f", &a);
printf("Donner la valeur de b: ");
scanf("%f", &b);
printf("Donner la valeur de c: ");
scanf("%f", &c);
printf("Votre équation à resoudre est %fX²+(%f)X+%f", a,b,c);
if(0==a)
printf("La solution de l'équation est %f", -c/b);
else if(0==b)
printf("Les solutions de l'équation sont %f et %f", -sqrt(c/a),sqrt(c/a));
else if(0==a&&0==b&&0==c)
printf("Il n'y a pas de solution sinon 0 ne peut être égale qu'à 0");
else
{
d=(b*b)-4*a*c;
if(0==d)
printf("La solution de l'équation est %f", -b/2*a);
else if(d<0)
printf("Les solutions de l'équation sont %f et %f", (-b+isqrtf(d))/(2*a),(b+isqrt(d))/(2*a));
else
if(d>0)
printf("Les solutions de l'équation sont %f et %f", (-b+sqrt(d))/2*a,(b+isqrt(d))/2*a);
}
}
i étant le nombre complexe imaginaire. Et on me dit ceci au moment de la création du fichier exécutable:
trinome.o: In function 'main':
trinome.c:(.text+0x11a): undefined reference to 'sqrt'
trinome.c:(.text+0x138): undefined reference to 'sqrt'
trinome.c:(.text+0x232): undefined reference to 'isqrt'
trinome.c:(.text+0x25e): undefined reference to 'isqrtf'
trinome.c:(.text+0x2ba): undefined reference to 'isqrt'
trinome.c:(.text+0x2f8): undefined reference to 'sqrt'
collect2: ld returned 1 exit status
Mon programme est nommé trinome.c, je suis sous ubuntu ultimate.
Quel est donc le probleme?
Dieu n'a fait qu'ébaucher l'homme, c'est sur terre que chacun se crèe
je suis débutant en programmation et j'aimerais un peu d'aide. Le programme suivant, me dit lors de la création du fichier exécutable (gcc -c trinome trinome.c), qu'il y a une erreur au niveau du sqrt. chose que je ne comprends pas.
#include<stdio.h>
#include<math.h>
float a,b,c,d,X,X1,X2,X,i;
main()
{
printf("Vous allez resoudre une équation du second dégré de la forme aX²+bX+c=0");
printf("Donner la valeur de a: ");
scanf("%f", &a);
printf("Donner la valeur de b: ");
scanf("%f", &b);
printf("Donner la valeur de c: ");
scanf("%f", &c);
printf("Votre équation à resoudre est %fX²+(%f)X+%f", a,b,c);
if(0==a)
printf("La solution de l'équation est %f", -c/b);
else if(0==b)
printf("Les solutions de l'équation sont %f et %f", -sqrt(c/a),sqrt(c/a));
else if(0==a&&0==b&&0==c)
printf("Il n'y a pas de solution sinon 0 ne peut être égale qu'à 0");
else
{
d=(b*b)-4*a*c;
if(0==d)
printf("La solution de l'équation est %f", -b/2*a);
else if(d<0)
printf("Les solutions de l'équation sont %f et %f", (-b+isqrtf(d))/(2*a),(b+isqrt(d))/(2*a));
else
if(d>0)
printf("Les solutions de l'équation sont %f et %f", (-b+sqrt(d))/2*a,(b+isqrt(d))/2*a);
}
}
i étant le nombre complexe imaginaire. Et on me dit ceci au moment de la création du fichier exécutable:
trinome.o: In function 'main':
trinome.c:(.text+0x11a): undefined reference to 'sqrt'
trinome.c:(.text+0x138): undefined reference to 'sqrt'
trinome.c:(.text+0x232): undefined reference to 'isqrt'
trinome.c:(.text+0x25e): undefined reference to 'isqrtf'
trinome.c:(.text+0x2ba): undefined reference to 'isqrt'
trinome.c:(.text+0x2f8): undefined reference to 'sqrt'
collect2: ld returned 1 exit status
Mon programme est nommé trinome.c, je suis sous ubuntu ultimate.
Quel est donc le probleme?
Dieu n'a fait qu'ébaucher l'homme, c'est sur terre que chacun se crèe
A voir également:
- Sqrt en algorithme
- Logiciel algorithme euromillion - Télécharger - Loisirs créatifs
- Logiciel algorithme gratuit - Télécharger - Édition & Programmation
- Algorithme euromillion excel gratuit - Forum Algorithmes / Méthodes
- Algorithme ajout rapide snapchat - Forum Snapchat
- Ajout rapide snap - Forum Snapchat
4 réponses
Bonjour,
isqrt n'existe pas en C standard. Dans le cas d'un discriminant négatif, tu dois calculer d'une part la partie réelle et d'autre part la partie complexe. Tu auras donc un nombre de la forme : x+i*y. A la place du isqrt, tu devras donc calculer sqrt(-d).
Pour sqrt(), c'est une fonction qui se trouve dans une bibliothèque externe, il faut donc linker avec -lm.
Pour la compilation, tu auras donc : gcc -lm -o trinome trinome.c (L minuscule).
Pas besoin de -c.
Cdlt,
isqrt n'existe pas en C standard. Dans le cas d'un discriminant négatif, tu dois calculer d'une part la partie réelle et d'autre part la partie complexe. Tu auras donc un nombre de la forme : x+i*y. A la place du isqrt, tu devras donc calculer sqrt(-d).
Pour sqrt(), c'est une fonction qui se trouve dans une bibliothèque externe, il faut donc linker avec -lm.
Pour la compilation, tu auras donc : gcc -lm -o trinome trinome.c (L minuscule).
Pas besoin de -c.
Cdlt,
Bonjour,
Il faut linker -lm avec gcc sous linux quand vous utilisez math.h
gcc trinome.c -c trinome -lm
*deuxième fois que je post ma réponse. il y a des problèmes avec l'édition sur le forum
Il faut linker -lm avec gcc sous linux quand vous utilisez math.h
gcc trinome.c -c trinome -lm
*deuxième fois que je post ma réponse. il y a des problèmes avec l'édition sur le forum
Ok. J'ai pas considérie le cas où delta (b²-4ac) est un nombre complexe (avec la partie réelle et la partie imaginaire non nulle du genre a+ib) mais juste dans le cas où il est négatif. Par exemple si d=(-25)=(25i²) donc les solutions sont (-b+ sqrt(25i²)/2a. cela implique (-b+ i5)/2a. d'pù l i sqrt. Ou comment dois je prcéder?