Pb avec scanf les valeurs ne sont pas lues
Résolu
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??
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??
A voir également:
- Pb avec scanf les valeurs ne sont pas lues
- Quand on visite cette page, des messages sont échangés entre le navigateur et le site web. des extraits des messages échangés lors de la première connexion sont reproduits ci-dessous. des valeurs ont été remplacées par des numéros. retrouvez chacune de ces valeurs. - Forum Windows 10
- Whatsapp message lu mais pas bleu - Guide
- Cette valeur ne correspond pas aux restrictions de validation des données pour cette cellule ✓ - Forum MacOS
- Messenger message distribué mais pas lu ✓ - Forum Facebook Messenger
- Message sur facebook messenger "envoyé" mais non "reçu" ✓ - Forum Facebook Messenger
8 réponses
Aucune idée chez moi ça fonctionne correctement.
Est-ce que tu peux essayer en utilisant des doubles (au lieu des long double) et en lisant avec "%lf" ?
Bonne chance
(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
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 :
Ce qui donne :
Je t'avoue que dans ton code je ne vois pas d'erreur tu es sûr d'avoir recompilé ?
- 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é ?
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++
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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é?
ca ne pourrait pas venir de la console en elle même ou d'application windws utilisé?
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...
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...
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.