[C] petit probleme sur un prog tout simple !!

petit probleme sur un prog tout simple !! [C] - C - Programmation

Marsh Posté le 08-11-2003 à 21:46:41    

voici l'intitulé de l'exo : ecrire une fonction ayant pour arguments 2 reels et un  operateur et retournant le resulat du calcul .
 
Voici mon prog :  

Code :
  1. float Calcul( float a, float b, char c);
  2. void main ()     {
  3. float nb1, nb2;
  4. char op;
  5. printf("Premier reel : " );
  6.     scanf("%f",&nb1);
  7. printf("Operateur : " );
  8. scanf("%c",&op);
  9. printf("Second reel : " );
  10.     scanf("%f",&nb2);
  11. printf("%f %c %f = %f", nb1, op, nb2, Calcul(nb1, nb2, op));
  12. }
  13. float Calcul(float a,float b,char c)    {
  14. float res;
  15. switch (c)
  16. {
  17.  case '+': res = a + b; break;
  18.  case '-': res = a - b; break;
  19.  case '*': res = a * b; break;
  20.  case '/':
  21.   if (b==0)
  22.    {
  23.     printf("Division par zero impossible !!!!!" );
  24.     res = -999999;
  25.    }
  26.   else
  27.    {
  28.     res = a / b; break;
  29.    }
  30.  default : res = -999999;
  31. }
  32. return res;


 
La compilation se passe bien ! Le probleme vient du fait que je ne peux pas saisir l'operateur donc pb au niveau du scanf de l'op ! (ligne  10) Qu'est ce qui ne va pas ??? :??:  :??:  
 
Merci :jap:

Reply

Marsh Posté le 08-11-2003 à 21:46:41   

Reply

Marsh Posté le 08-11-2003 à 21:48:49    

mezy des grands coups de fflush(stdout) apres chaque printf

Reply

Marsh Posté le 08-11-2003 à 21:51:33    

oki je vais essayer !!
Thanx  :)

Reply

Marsh Posté le 08-11-2003 à 21:55:42    

ca y est ca marche nickel !!!!
 
Merci !!
 
Au fait, tu pourrais m'expliquer en quelques mots qu'est ce que ca apporte de plus de mettre fflush(stdin/out ) ????

Reply

Marsh Posté le 08-11-2003 à 21:56:45    

tu aurais le meme resultat avec un \n a la fin de tes printfs
 
tout marchait bien, sauf que les IO sont bufferisés, eg quand tu fais un printf() ca ne s'affiche pas directement a l'ecran
le fflush force le truc

Reply

Marsh Posté le 08-11-2003 à 21:58:01    

oki merci beaucoup  :jap:

Reply

Marsh Posté le 09-11-2003 à 00:54:17    

crazy_rider a écrit :

ca y est ca marche nickel !!!!
 
Merci !!
 
Au fait, tu pourrais m'expliquer en quelques mots qu'est ce que ca apporte de plus de mettre fflush(stdin/out ) ????


 
[:taz]

Reply

Marsh Posté le 09-11-2003 à 03:30:05    


 
pourquoi on peut pas flusher le stdin au fait. tout ce que je sais, c'est que le prof avait dit que c'était pas standard mais pourquoi donc c'est pas standard ?

Reply

Marsh Posté le 09-11-2003 à 05:11:33    

xav14 a écrit :


 
pourquoi on peut pas flusher le stdin au fait. tout ce que je sais, c'est que le prof avait dit que c'était pas standard mais pourquoi donc c'est pas standard ?


 
parce que tout simplement, tu n'es pas sur du tout de ce que stdin représente ... En tous cas, ce ne sera pas toujours des entrées au clavier (redirection de flux faite via un shell, par exemple ...)
 
 
Edit : Enfin ... Taz expliquerait ca mieux que moi, d'où son symbole ci-dessus ! :D


Message édité par theshockwave le 09-11-2003 à 05:13:08
Reply

Marsh Posté le 09-11-2003 à 06:32:54    

ha oki je comprend mieux :jap: (suis trop con)
 
un fflush(stdin) avec un fichier ça ferait n'imp.

Reply

Marsh Posté le 09-11-2003 à 06:32:54   

Reply

Marsh Posté le 09-11-2003 à 15:13:12    

juste un ptit truc sauf erreur en C99 qui est la norme
main() doit "toujour" retourner un int  
int main()
{
return 0;
}
 
vala y a une norme elle doit etre utilisée
bon week end

Reply

Marsh Posté le 09-11-2003 à 15:21:59    

geffs a écrit :

juste un ptit truc sauf erreur en C99 qui est la norme
main() doit "toujour" retourner un int  
int main()
{
return 0;
}
 
vala y a une norme elle doit etre utilisée
bon week end  


 
ouais ben t'as pas du bien la lire la norme parce que le return 0 est inutile, il est implicite (toujours en se basant sur Taz ;) )


Message édité par antsite le 09-11-2003 à 15:22:50
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed