Appel d'un fichier d'entete

[Résolu]
Signaler
Messages postés
13
Date d'inscription
mercredi 6 décembre 2006
Statut
Membre
Dernière intervention
23 février 2010
-
Messages postés
13
Date d'inscription
mercredi 6 décembre 2006
Statut
Membre
Dernière intervention
23 février 2010
-
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

Messages postés
92
Date d'inscription
samedi 26 mars 2005
Statut
Membre
Dernière intervention
23 septembre 2015

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 !
Messages postés
15151
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
14 octobre 2021
99
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...
Messages postés
13
Date d'inscription
mercredi 6 décembre 2006
Statut
Membre
Dernière intervention
23 février 2010

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,