Pb avec scanf les valeurs ne sont pas lues

Résolu/Fermé
dark101 Messages postés 5 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 septembre 2007 - 29 août 2007 à 22:00
mamiemando Messages postés 33541 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 24 février 2025 - 2 sept. 2007 à 21:46
Bonjour,
Je debute en C++ et j'utilise devc++ voici le prog du cours :

#include <stdio.h> /* Autorise l'emploi de printf et de scanf. */
#include <stdlib.h> /*permet d'utiliser la commande system ("pause" ); pour ne pas fermer la console*/
long double x ,y;

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);
system ("pause" );
return 0;
}


Le probleme c'est que le programme lit correctement la valeur de x (il affiche 5 si je tape 5) mais pour y il affiche 0 peu importe le nombre voici ce qu'affiche la console se serat peut etre plus clair.

Calcul de moyenne
Entrez le premier nombre : 5

Entrez le deuxiÞme nombre : 5

La valeur moyenne de 5.000000 et de 0.000000 est 0.000000.
Appuyez sur une touche pour continuer...


quelle est le probleme??

8 réponses

mamiemando Messages postés 33541 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 24 février 2025 7 828
31 août 2007 à 15:20
Aucune idée chez moi ça fonctionne correctement.
(mando@aldur) (~) $ gcc -W -Wall plop.c
(mando@aldur) (~) $ ./a.out
Calcul de moyenne
Entrez le premier nombre : 5555555555

Entrez le deuxième nombre : 55588888

La valeur moyenne de 5555555555.000000 et de 55588888.000000 est 2805572221.500000.

Est-ce que tu peux essayer en utilisant des doubles (au lieu des long double) et en lisant avec "%lf" ?

Bonne chance
0
mamiemando Messages postés 33541 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 24 février 2025 7 828
30 août 2007 à 00:18
Quelques remarques pas très importantes
- Tu peux sous entendre le void dans int main(void)
- Evite les variables globales, x et y devraient simplement être déclarées dans le main
- A priori l'utilisation de long double est un peu abusive, tu peux te contenter de double dans la très grande majorité des cas.

Chez moi ce programme marche :
#include <stdio.h>

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

Ce qui donne :
(mando@aldur) (~) $ gcc -W -Wall plop.c
(mando@aldur) (~) $ ./a.out
Calcul de moyenne
Entrez le premier nombre : 5

Entrez le deuxième nombre : 7

La valeur moyenne de 5.000000 et de 7.000000 est 6.000000.

Je t'avoue que dans ton code je ne vois pas d'erreur tu es sûr d'avoir recompilé ?
-1
dark101 Messages postés 5 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 septembre 2007
30 août 2007 à 08:32
oui j'ai bien recompiler mais rien n'y fait même en prenant des variables locales. Ca vient peut etre du compilateur j'utilise dev c++
-1
mamiemando Messages postés 33541 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 24 février 2025 7 828
30 août 2007 à 09:55
Ben dev C++ repose sur gcc et tu as bien vu que j'ai compilé avec gcc. C'est vraiment bizarre :s
Par contre tu as peut être une vieille version bugguée qui sait ? Tu es sûr de recompiler le bon fichier source et de lancer le bon exécutable ?

Bonne chance
-1

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

Posez votre question
dark101 Messages postés 5 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 septembre 2007
31 août 2007 à 10:38
oui je recompile le bon fichier , je lance lance le bon executable j'essaye de mettre a jour dev c++ -(version 4.9.9.2) et ce n'est pas mieux.
ca ne pourrait pas venir de la console en elle même ou d'application windws utilisé?
-1
dark101 Messages postés 5 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 septembre 2007
31 août 2007 à 11:16
nouvelle bizarrerie, si ca peut t'aider !

Calcul de moyenne
Entrez le premier nombre : 5555555555

Entrez le deuxiÞme nombre : 55588888

La valeur moyenne de 5555555555.000000 et de -2.000000 est 0.000000.
Appuyez sur une touche pour continuer...
-1
dark101 Messages postés 5 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 septembre 2007
1 sept. 2007 à 09:43
ouui ca y est ! ca marche c'était bien à cause des long double, je comprend pas pourquoi mais ca marche! Merci beaucoup j'espere que je n'aurais jamais besoin des long double.
-1
mamiemando Messages postés 33541 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 24 février 2025 7 828
2 sept. 2007 à 21:46
Ahaha bon ben c'est bon à savoir, ça marche sous linux mais pas windows. Rassure toi les long double ne servent en pratique jamais, les double sont suffisants dans la très grande majorité des cas. En tout cas c'est cool que ton problème soit résolu !

A bientôt
-1