cs_batoule80
Messages postés13Date d'inscriptionmercredi 6 décembre 2006StatutMembreDernière intervention23 février 2010
-
23 févr. 2010 à 12:06
cs_batoule80
Messages postés13Date d'inscriptionmercredi 6 décembre 2006StatutMembreDernière intervention23 février 2010
-
23 févr. 2010 à 18:49
Bonjour,
je programme en c sous linux , il s'agit de résoudre une équation du second degrés.
en premier lieu on insite l'utilisateur à saisir les coéfficients, là le programme marche bien
#include<stdio.h>
#include<math.h>
main() {
int a,b,c ;float delta, x1 ,x2 ;
printf ("la valeur de A ? = ") ; scanf ("%d" , &a);
printf ("la valeur de B ? = ") ; scanf ("%d" , &b);
printf ("la valeur de C ? = ") ; scanf ("%d" , &c);
delta = pow(b,2)-4*a*c ;
if (delta<0) printf (" pas de solution de l'équation dans l'ensemble des réels\n");
else
if (delta==0)
{ x1= -b/2*a ;
printf (" solution unique égale à : %f\n", x1) ; }
else
{ x1= (-b-pow(delta,1/2))/2*a;
x2= (-b+pow(delta,1/2))/2*a;
printf ("solution double égale à : %f\n %f\n ", x1 , x2) ; }
}
ensuite , on utilise un fichier d'entete constante.h dans lequel on déclare les constante
son contenu est le suivant :
#define a 9
#define b 2
#define c 4
hors avec cette soluition ça ne marche pas
une idée sur la source du problème ?, merci de partager
dragonjoker59
Messages postés92Date d'inscriptionsamedi 26 mars 2005StatutMembreDernière intervention23 septembre 2015 23 févr. 2010 à 15:03
Si tu demandes les valeurs de a, b et c à l'utilisateur, pourquoi les redéfinir dans ton fichier 'constante.h' ?
Pour rappel , tes '#define' font que toutes les occurences de a, b ou c seront remplacées par leur valeur définie, et ce même dans tes scanf, donc en gros, tu vas tenter de mettre la valeur entrée par l'utilisateur dans un pointeur sur '9' ... Me demande pas ce que ça fait, mais à mon avis ça doit pas faire ce que tu veux. ^^
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024103 23 févr. 2010 à 17:34
Hello,
Autre "détail" en passant: le test d'égalité nulle ne marche pas avec les flottants, du fait de la précision machine. Il faut prendre l'habitude de tester la valeur absolue d'un petit nombre, par exemple
cs_batoule80
Messages postés13Date d'inscriptionmercredi 6 décembre 2006StatutMembreDernière intervention23 février 2010 23 févr. 2010 à 18:49
merci dragonjoker59 et buno pour vos réponses
en effet, c'était ça le problème, fallait supprimer la ligne int a,b,c.
je suis débutante en langage C , et des erreurs pareilles j'en ferai énormément
et c'est de ces erreurs qu'on apprend.