Posez votre question Signaler

Resoudre equation du second degré en c

sisimouhamed - Dernière réponse le 14 déc. 2011 à 08:35
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);
}
Lire la suite 

Resoudre equation du second degré en c »

15 réponses
Réponse
+1
moins plus
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);
}
}
helper - 8 juil. 2011 à 20:41
bjr amigo alore au lieux de "b*b" il est mieux de mettre pow(b,2) et en plus je pense ke ca relation avec les acolades!!!!! et il ne faut pas lire les resultat enleve "scanf("%f %f", &x1, &x2); " le racine tu peux le traduire comme suit pow(delta,0.5) c faisable
fiddy- 8 juil. 2011 à 22:11
"b*b" il est mieux de mettre pow(b,2)
Non, c'est mieux de mettre b*b. Non seulement ça sera plus rapide, et il y n'y aura pas d'erreur d'arrondi.
) et en plus je pense ke ca relation avec les acolades!!!!!
Je comprends pas ??? En tout cas, il faut les accolades car il y a plusieurs conditions dans les if...
le racine tu peux le traduire comme suit pow(delta,0.5)
Oui ou sqrt...

Sinon, ça date de 2008 ;-)))
ennou - 5 déc. 2011 à 21:57
merci ^^
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
donc si j'ai compris je peux mettre à la place de int CH; systeme "PAUSE";
Ajouter un commentaire
Réponse
+0
moins plus
les solutions de l'equation en second degre de programmation en c
Ajouter un commentaire
Réponse
+0
moins plus
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
main(){
float a,b,c,delta,x1,x2;
printf("donne la valeur de a ");
scanf("%f",&a);
printf("donne la valeur de b ");
scanf("%f",&b);
printf("donne la valeur de c ");
scanf("%f",&c);
x1=(-b-sqrt(delta))/2*a;
x2=(-b+sqrt(delta))/2*a;
if(a==0 && b==0 && c==0)
printf("l'ensembe R\n");
else if (a==0 && b==0)
printf("pas de solution\n");
else if (a==0)
printf("la solution est:%f \n",-c/b);
else {
delta=pow(b,2)-4*a*c ;
printf(" delta = %0.f\n",delta);
if (delta>0){
printf("deux solution x1: %f\n",x1);
printf("deux solution x2: %f\n",x2);
}
else if (delta==0)
printf("la solution = %f\n",-b/2*a);

else
printf("pas de solution\n");}




system("pause ");
}
Ajouter un commentaire
Réponse
-1
moins plus
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
Ajouter un commentaire
Réponse
-2
moins plus
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
Ajouter un commentaire
Réponse
-2
moins plus
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.
Ajouter un commentaire
Réponse
-2
moins plus
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

tsou - 14 sept. 2008 à 07:50
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;
}
Ajouter un commentaire
Réponse
-2
moins plus
oui ;)
Ajouter un commentaire
Ce document intitulé « resoudre equation du second degré en c » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?