Appel d'un fichier d'entete [Résolu]

Messages postés
13
Date d'inscription
mercredi 6 décembre 2006
Statut
Membre
Dernière intervention
23 février 2010
- - Dernière réponse : 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
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
92
Date d'inscription
samedi 26 mars 2005
Statut
Membre
Dernière intervention
23 septembre 2015
3
Merci
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 !

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 197 internautes nous ont dit merci ce mois-ci

Commenter la réponse de dragonjoker59
Messages postés
14636
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
9 octobre 2019
90
0
Merci
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...
Commenter la réponse de BunoCS
Messages postés
13
Date d'inscription
mercredi 6 décembre 2006
Statut
Membre
Dernière intervention
23 février 2010
0
Merci
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,
Commenter la réponse de cs_batoule80