Problème en langage C
fahim0788
Messages postés
111
Statut
Membre
-
lami20j -
lami20j -
Bonjours, ce programme ressemble à une petite calculette, on saisit un opérateur et deux entiers et il retourne le résultat de l'opération correspondante et cela tanque l'utilisateur répond par une touche déffirente de 'Q' qui signifie <Quitter>, le problème est que malgré la saisie du 'Q' le programme redemande de saisir un opérateur et deux entiers si quelqu'un voit pourquoi merci d'avance de m'avoir informer,
#include <stdio.h>
#include <stdlib.h>
char lireCaractere()
{
char caractere='q';
caractere = getchar();
while (getchar() != '\n');
return caractere;
}
void main()
{
char op,r='0';
int x,y;
while(r!='Q'){
printf("\n Introduisez un operateur: ");
op=lireCaractere();
printf(" \n x = ");
scanf("%d",&x);
printf("\n y = ");
scanf("%d",&y);
switch(op){
case '+':printf("\n %d + %d = %d ",x,y,x+y);break;
case '-':printf("\n %d - %d = %d ",x,y,x-y);break;
case '*':printf("\n %d * %d = %d ",x,y,x*y);break;
case '/':printf("\n %d / %d = %d ",x,y,x/y);break;
case '%':printf("\n %d mod %d = %d ",x,y,x%y);break;
default :printf("\n Introduisez un operateur correct!");
}
printf("\n Appuyer sur Q pour quitter ou autre touche pour continuer: ");
r=lireCaractere();
}
}
A voir également:
- Problème en langage C
- Langage ascii - Guide
- Langage binaire - Guide
- Langage visual basic - Télécharger - Langages
- Que veut dire pdf en langage sms ✓ - Forum Programmation
- Pascal langage - Télécharger - Édition & Programmation
2 réponses
mince je m'en rappelle plus du langage C Y_Y
mais bon si tu veuw avoir une reponse a coup sur va sur www.siteduzero.com et poste sur le forum
P.S: n'oublie pas de t'inscrire (gratuit et rapide)
mais bon si tu veuw avoir une reponse a coup sur va sur www.siteduzero.com et poste sur le forum
P.S: n'oublie pas de t'inscrire (gratuit et rapide)
Salut,
La fonction lireCaractere n'est pas vraiment nécessaire vu que tu peux utiliser directement getchar()
Je pense aussi que le message de la clause default: apparaît trop tard (c'est-à-dire après avoir saisi x et y).
Tant qu'on a taper autre chose qu'une opération prevue, autant afficher le message toute de suite que l'opérateur n'est pas bon.
Tu peux penser à rémedier ça.
N'oublie pas de gérer aussi la division avec zéro.
La fonction lireCaractere n'est pas vraiment nécessaire vu que tu peux utiliser directement getchar()
Je pense aussi que le message de la clause default: apparaît trop tard (c'est-à-dire après avoir saisi x et y).
Tant qu'on a taper autre chose qu'une opération prevue, autant afficher le message toute de suite que l'opérateur n'est pas bon.
Tu peux penser à rémedier ça.
N'oublie pas de gérer aussi la division avec zéro.
#include <stdio.h>
#include <stdlib.h>
char lireCaractere()
{
return getchar();
}
int main()
{
char op,r='0';
int x,y;
while(r!='Q'){
printf("\n Introduisez un operateur: ");
op=lireCaractere();
printf(" \n x = ");
scanf("%d",&x);
printf("\n y = ");
scanf("%d",&y);
switch(op){
case '+':
printf("\n %d + %d = %d ",x,y,x+y);
break;
case '-':
printf("\n %d - %d = %d ",x,y,x-y);
break;
case '*':
printf("\n %d * %d = %d ",x,y,x*y);
break;
case '/':
printf("\n %d / %d = %d ",x,y,x/y);
break;
case '%':
printf("\n %d mod %d = %d ",x,y,x%y);
break;
default :
printf("\n Introduisez un operateur correct!");
break;
}
printf("\n Appuyer sur Q pour quitter ou autre touche pour continuer: ");
while (getchar() != '\n');
r=getchar();
}
return EXIT_SUCCESS;
}