Rechercher : dans
Par :

Resoudre equation du second degré en c

Dernière réponse le 15 sep 2008 à 18:32:43 sisimouhamed, le 13 sep 2008 à 22:27:58 
 Signaler ce message aux modérateurs

Bonjour,
JE voudrais une aide car ce programme ne marche pas.Merci
#include<stdio.h>
#include<math.h>
main (){
float a,b,c,delta,x1,x2,x;
printf("entrer a\n:");
scanf("%f", &a);
printf("entrer b\n:");
scanf("%f", &b);
printf("entrer c\n:");
scanf("%f", &c);
delta=((b*b)-(4*a*c));

if (delta>=0){
x1=((-b- sqrt(delta)))/(2*a);
x2=(-b+ sqrt(delta))/(2*a);
printf("les deux solution sont:%f et %f", x1, x2);

}



else
printf("pas de solution\n", x);


}

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « resoudre equation du second degré en c » dans :
CCM et les bourses d'études VoirBourses d'études Beaucoup demandent des bourses d'études via ce site (CCM). Cet article a été créé pour leur répondre. CCM et les bourses d'études Bourses d'études en France Considérations générales Bourses du second degré et des premier...

1

fiddy, le 13 sep 2008 à 22:32:06

Salut
Je pense que tu as tout simplement oublié l'option -lm (L minuscule) lors de la compilation pour utiliser la bibliothèque math ;)
Sinon, n'oublie pas de traiter dans ton code le cas a=0 (équation du premier degré sinon division par 0.
Cdt
Google is your friend

Répondre à fiddy

2

sisimouhamed, le 13 sep 2008 à 22:41:21

Bonjour,
j'ai pas compris l'option que vous voulez dir(L minuscul)
Aussi méme si le a =0 ne vient pas normalement je devais avoir des solutions.Merci

Répondre à sisimouhamed

3

fiddy, le 13 sep 2008 à 22:47:04

Bien, lorsque tu compiles :
gcc prog.c -o prog -Wall -lm
Sans le lm, ça marchera pas.
Sinon, non si a=0, il y aura un problème car dans x1 et x2 tu divises par 0. Donc erreur.
Google is your friend

Répondre à fiddy

4

sisimouhamed, le 13 sep 2008 à 22:49:25

Bonjour,
j'ai mis maintenant le cas de a=0 mais ça na pas marché le voici:
#include<stdio.h>
#include<math.h>
main (){
float a,b,c,delta,x1,x2,x;
printf("entrer a\n:");
scanf("%f", &a);
printf("entrer b\n:");
scanf("%f", &b);
printf("entrer c\n:");
scanf("%f", &c);
delta=((b*b)-(4*a*c));
if(a!=0){
if (delta>=0){
x1=((-b- sqrt(delta)))/(2*a);
x2=(-b+ sqrt(delta))/(2*a);
printf("les deux solution sont:%f et %f", x1, x2);
scanf("%f %f", &x1, &x2);
}



else
printf("pas de solution\n", x);

}
else if (a=0){
x=b/c;
printf("la solution est:%f", x);
scanf("%f", &x);
}
}

Répondre à sisimouhamed

5

fiddy, le 13 sep 2008 à 22:52:56

Le cas a=0, c'était pas pour corriger ton bug mais un conseil ^^. Sinon x=-b/c et non b/c.
Mais comme je t'ai dit, l'erreur vient de la compilation. Lorsque tu compiles :
gcc -o prog prog.c -lm


Google is your friend

Répondre à fiddy

6

tsou, le 14 sep 2008 à 07:50:46

Sur devc++ je viens de faire le test et quelches changements , ca a l`air de donner le resultat escompte.

#include <stdio.h>
#include <stdlib.h>
/* Bonjour,
JE voudrais une aide car ce programme ne marche pas.Merci
#include<stdio.h>*/
#include<math.h>
int main(int argc, char *argv[])
{

int CH = 1;;
float a,b,c,x1,x2,x;
float delta = 0.;
printf("entrer a\n:");
scanf("%f", &a);
printf("entrer b\n:");
scanf("%f", &b);
printf("entrer c\n:");
scanf("%f", &c);
delta =((b*b) -(4*(a*c)));
printf("Delta:%f \n",delta);
if (delta>=0)
{ printf("sqrt(delta): %f \n", sqrt(delta));

x1=((-b- sqrt(delta))) /(2*a);
x2=(-b+ sqrt(delta)) /(2*a);
printf("les deux solution sont:%f et %f", x1, x2);

}

else
printf("pas de solution\n", x);


scanf("%d",&CH); /* pour arreter et voir les resultats */
return 0;
}

Répondre à tsou

7

sisimouhamed, le 15 sep 2008 à 18:09:40

Bonjour,
le programme a bien marché mais j'ai pas compris pourquoi vous avez mis dans la fonction int main :(int argc, char *argv[])
En plus pourquoi le bibliotheque <stdlib<h>
aussi pourquoi vous avez declarer CH comme int et l'initialiser à 1 et initialiser delta à 0.Merci

Répondre à sisimouhamed

8

fiddy, le 15 sep 2008 à 18:15:26

Salut,
int argc, char**argv n'est pas obligatoire dans ton cas car tu ne récupères pas les paramètres passés lors du lancement du programme.
Et stdlib.h est inutile ici.
delta n'a pas besoin non plus d'être initialisé à 0.
et à la place de sa variable CH, on n'utilise plutôt system("PAUSE");

Cdt
Google is your friend

Répondre à fiddy

9

sisimouhamed, le 15 sep 2008 à 18:29:49

Bonjour,
donc si j'ai compris je peux mettre à la place de int CH; systeme "PAUSE";

Répondre à sisimouhamed

10

 fiddy, le 15 sep 2008 à 18:32:43

Oui ;)
Google is your friend

Répondre à fiddy
Collection CommentÇaMarche.net