Appel d'un fichier d'entete

Résolu
cs_batoule80 Messages postés 13 Date d'inscription mercredi 6 décembre 2006 Statut Membre Dernière intervention 23 février 2010 - 23 févr. 2010 à 12:06
cs_batoule80 Messages postés 13 Date d'inscription mercredi 6 décembre 2006 Statut Membre Dernière intervention 23 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

3 réponses

dragonjoker59 Messages postés 92 Date d'inscription samedi 26 mars 2005 Statut Membre Dernière intervention 23 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. ^^


Coin coin !
3
BunoCS Messages postés 15330 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 novembre 2022 103
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
if (abs(delta) < 0.0001)
{
  x1= -b/2*a ;
  printf (" solution unique égale à : %f\n", x1) ;
}
else
{
  x1= (-b-pow(delta,1/2))/2*a;
}



@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
cs_batoule80 Messages postés 13 Date d'inscription mercredi 6 décembre 2006 Statut Membre Dernière intervention 23 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.

cordialement,
0