Erreur de case
Résolu
lily_5957
Messages postés
2
Statut
Membre
-
Dalfab Messages postés 720 Statut Membre -
Dalfab Messages postés 720 Statut Membre -
Bonjour...!
Je suis débutante en programmation C. Je me suis donné pour objectif de faire plus d'efforts et m'améliorer dans ce langage. Ainsi, je m'amuse à créer de petits programmes comme la mini calculatrice à fonctionnalités basiques qui n'effectue que des opérations sur des nombres entiers naturels.
Voici notamment le code de ce programme :
Alors, le problème survient après compilation et exécution du programme. Précisement après la phrase "Donnes maintenant le premier nombre entier de preference s'il te plait". Je suis obligé d'entrer deux chiffres x et y avant qu'il n'affiche A = x.
Vient ensuite la deuxième phrase où j'entre un chiffre k. Mais il me revient B = y au lieu de B = k.
Voici une image pour illustrer mieux mes propos :

Pouvez-vous m'aider à comprendre mon erreur et surtout en me proposant une solution au problème ?
Merci d'avance de me répondre.
Je suis débutante en programmation C. Je me suis donné pour objectif de faire plus d'efforts et m'améliorer dans ce langage. Ainsi, je m'amuse à créer de petits programmes comme la mini calculatrice à fonctionnalités basiques qui n'effectue que des opérations sur des nombres entiers naturels.
Voici notamment le code de ce programme :
#include <stdio.h> #include <stdlib.h> int choix, a, b, add, sous, mul, divi; void message1() { printf("Donnes maintenant le premier nombre entier de preference s'il te plait \n"); scanf("%d\n", &a); printf("A = %d\n", a); printf("Donnes maintenant le deuxieme nombre entier de preference s'il te plait \n"); scanf("%d\n", &b); printf("B = %d\n", b); return; } int main() { printf(" \n"); printf("Quelle operation veux-tu effectuer ? \n\n * Appuie 1 pour une addition \n * Appuie 2 pour une soustraction \n * Appuie 3 pour une multiplication \n * Appuie 4 pour une division \n"); scanf("\n %d",&choix); if(choix == 1){ printf("Tu veux faire une addition.\n\n"); message1(); add = (a + b); printf("\n *** >-< Le resultat vaut : %d >-< *** \n", add); } if(choix == 2){ printf("Tu veux faire une soustraction. \n\n"); message1(); sous = (a - b); printf("\n *** >-< Le resultat vaut : %d >-< *** \n", sous); } if(choix == 3){ printf("Tu veux faire une multiplication. \n\n"); message1(); mul = (a *b); printf("\n *** >-< Le resultat vaut : %d >-< *** \n", mul); } if(choix == 4){ printf("Tu veux faire une division. \n\n"); message1(); divi = (a / b); printf("\n *** >-< Le resultat vaut : %d >-< *** \n", divi); } }
Alors, le problème survient après compilation et exécution du programme. Précisement après la phrase "Donnes maintenant le premier nombre entier de preference s'il te plait". Je suis obligé d'entrer deux chiffres x et y avant qu'il n'affiche A = x.
Vient ensuite la deuxième phrase où j'entre un chiffre k. Mais il me revient B = y au lieu de B = k.
Voici une image pour illustrer mieux mes propos :
Pouvez-vous m'aider à comprendre mon erreur et surtout en me proposant une solution au problème ?
Merci d'avance de me répondre.
A voir également:
- Erreur de case
- Erreur t32 ✓ - Forum Livebox
- Excel case choix multiple - Guide
- Erreur 0x80070643 - Accueil - Windows
- Aller à la ligne dans une case excel - Guide
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
2 réponses
salut
essaye de mettre un "." sur tes lignes printf après %d
comme ça:
scanf("%d.\n", &a);
si ça ne marche pas, essaye d'initialiser tes valeurs pour tester
essaye de mettre un "." sur tes lignes printf après %d
comme ça:
scanf("%d.\n", &a);
si ça ne marche pas, essaye d'initialiser tes valeurs pour tester
L'erreur est ligne 25. Dans un format de
Mettre un
scanfon met ce que l'on veut lire, il ne faut pas mettre de
\n.
Mettre un
.après le format est un moyen de rattraper une sauce. On aurait aussi bien pu mettre un
Xou un
#. Le
scanfva tenter de vérifier l'égalité :
caractère suivant == '#'. Et donc va forcer une lecture du caractère suivant (qui ici est un
\n) et l'éjecter du buffer de lecture. On utilise souvent l'ajout d'une espace en fin de format, cette notation a un sens plus puissant : lire tous les caractères qui suivent tant qu'ils correspondent à des caractères non imprimables. Donc va "vider" les espaces, tabulations, CarriageReturn, LineFeed, VerticalTab, ... qui pourraient traîner à la fin.
Cela marche. Cela marche enfin !