Printf bizarre

x0s Messages postés 12 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 5 juin 2004 - 24 mai 2004 à 14:46
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 - 24 mai 2004 à 21:00
Bonjour Amis codeurs,

J'ai un probleme avec cette petite fonction, je débute en c, merci de m'aider, voici le problème:

#include <stdio.h>  /* Autorise l'emploi de printf et de scanf. */
 
long double x, y, z;
 
int main(void)
{
    printf("Calcul de moyenne\n");   /* Affiche le titre. */
    printf("Entrez le premier nombre : ");
    scanf("%Lf", &x);            /* Entre le premier nombre. */
    printf("\nEntrez le deuxième nombre : ");
    scanf("%Lf", &y);            /* Entre le deuxième nombre. */
    printf("\nLa valeur moyenne de %Lf et de %Lf est %Lf.\n", &x, &y, (x+y)/2);
    return 0;
}


Pour x 15 et y 5, il me retourne 0 8,5 et 0, alors qu'il devrait me retourner 15 5 et 10

5 réponses

shirah3i Messages postés 24 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 10 juin 2004
24 mai 2004 à 15:31
Essaye de mettre des fflush(stdin) après tes scanf().

SHIRAH
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
24 mai 2004 à 16:30
les pointeurs c'est pour scanf, pas printf :

=>printf("\nLa valeur moyenne de %Lf et de %Lf est %Lf.\n", x, y, (x+y)/2);
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
24 mai 2004 à 16:33
long double x,y,z ???

Essaye plutot int x,y,z.
Et mets des %i a la plave des %lf .. Puis au passage on ecrit %lf et pas %Lf.

int represente des nombres entier et float des nombre a virgules.. tu sais ce qu'il te reste a faire si tu veux obtenir des nombre decimaux !
Le z ne te sert a rien alors pourquoi le mettre ?

Pour le printf faut pas passer les adresse des variables mais leur contenu !!
Donc pas besoin de "&" avec le printf !

Ton programme devient donc :

#include <stdio.h> /* Autorise l'emploi de printf et de scanf. */

int x, y;

int main(void)
{
printf("Calcul de moyenne\n"); /* Affiche le titre. */
printf("Entrez le premier nombre : ");
scanf("%i", &x); /* Entre le premier nombre. */
printf("\nEntrez le deuxième nombre : ");
scanf("%i", &y); /* Entre le deuxième nombre. */
printf("\nLa valeur moyenne de %i et de %i est %i.\n", x, y, (x+y)/2);
return 0;
} 


Puis si tu veux obtenir des chiffres avec des decimaux le programme devient :
float x, y;

int main(void)
{
printf("Calcul de moyenne\n"); /* Affiche le titre. */
printf("Entrez le premier nombre : ");
scanf("%f", &x); /* Entre le premier nombre. */
printf("\nEntrez le deuxième nombre : ");
scanf("%f", &y); /* Entre le deuxième nombre. */
printf("\nLa valeur moyenne de %0.0f et de %0.0f est %0.0f.\n", x, y, (x+y)/2);
return 0;
} 


A++ et bonne prog ....

Samir

PS : Revoie les bases de la prog en C aussi =)
0
x0s Messages postés 12 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 5 juin 2004
24 mai 2004 à 19:34
Merci beaucoup ^^
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
24 mai 2004 à 21:00
shirah3i ==> JAMAIS de fflush(stdin) :o

"on an input stream, the effect is undefined..."
k&r ansi c89, appendix B1.1 p221

vais finir pas croire que c'est bien le plus gros mythe du C...
0
Rejoignez-nous