Gérer une reponse en C

Fermé
metnet - 17 déc. 2010 à 01:35
 JavaMafia.com - 17 déc. 2010 à 17:24
Bonjour,
j'aiemarai gérér une réponse pour traiter des ajouts je fais un programme pour demander à l'utilisateur de donner une reponse si il veut ajouter un titre de film.
Si il dit Oui on fait le traitement puis on lui demande encore si c'est Non on quitte le programme et si il tape autre chose je veux qu'il revient au début pour qu'il saisit sa réponse ce que j'arrive pas à faire.
voici le code

#include<stdio.h>
int main()
{char rep;
do
{
printf("Voulez vous ajouter un film ? \n");
printf("Appuyez sur O pour Oui ou N pour Non\n");
scanf("%s",&rep);
if((rep=='O')||(rep=='o'))
printf("On fait le traitement\n");
else
if((rep=='N')||(rep=='n'))
printf("Merçi et Au revoir\n");
else
printf("Erreur Vueillez appuyez sur la touche O ou N\n");
}while((rep=='O')||(rep=='o'));
getchar();
getchar();
}


1 réponse

JavaMafia.com
17 déc. 2010 à 04:26
Bonjour, ton code est correcte il te manque que quelques instruction:

#include<stdio.h>
int main()
{

char rep;
printf("Voulez vous ajouter un film ? \n");
printf("Appuyez sur O pour Oui ou N pour Non\n");
do
{
scanf("%s",&rep);
if((rep=='O')||(rep=='o'))
{
printf("On fait le traitement\n");
break;
}

else
{
if((rep=='N')||(rep=='n'))
{
printf("Merçi et Au revoir\n");
break;
}

else
printf("Erreur Vueillez appuyez sur la touche O ou N\n");
}

}

while((rep!='O')||(rep!='o'));
getchar();
getchar();
}

Bonne chance et merci de cliquer sur Résolu :)
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
17 déc. 2010 à 09:10
Non le programme n'est pas correct.


char rep;
scanf("%s",&rep);

Ces types sont incompatibles. Dans son cas, il faut utiliser rep=getchar(); ou scanf("%c",&rep);

Et, ne pas oublier de vider le '\n' restant dans le buffer clavier par un simple getchar();

Ce qui donnerait :
int main(void) 
{ 
  char rep; 
  printf("Voulez vous ajouter un film ? \n"); 
  printf("Appuyez sur O pour Oui ou N pour Non\n"); 
  do 
  { 
    rep=getchar();
    getchar();
    if((rep=='O')||(rep=='o')) 
    { 
      printf("On fait le traitement\n"); 
      break; 
    } 
    else 
    {  
    if((rep=='N')||(rep=='n')) 
    { 
      printf("Merçi et Au revoir\n"); 
      break; 
     } 
     else 
       printf("Erreur Vueillez appuyez sur la touche O ou N\n"); 
     } 
   } while((rep!='O')||(rep!='o')); 
   getchar();
   return 0;
} 

Sinon, tu peux faire beaucoup plus propre en utilisant l'instruction switch. Et pas besoin de vérifier majuscule ou minuscule. Tu peux simplement convertir rep en majuscule via toupper() et vérifier ce caractère uniquement.
Je te conseille également de faire des if, else if plutôt que des if, if. Ca sera plus performant. Et enfin, évite l'utilisation des "break" autant que possible.

Cdlt,
0
Merçi bcp pour la réponse
0
Bonjour,
en fait j'avais poser la question sur le forum et j'avais des reponses du coup j'ai mis résolu le programme marche bien mais il se trouve qu'il ne fait pas un chose à savoir si l'utilisateur tape sur Oui on fait le traitement puis on lui redemande encore si il veut continuer ce que ne fait pas le programme dés qu'il demande une premiére fois il fait son traitement et s'arrete

int main(void)
{
char rep;
printf("Voulez vous ajouter un film ? Appuyez sur O pour Oui ou N pour Non\n");
printf("\n");
do
{
rep=getchar();
getchar();
if((rep=='O')||(rep=='o'))
{
printf("On fait le traitement\n");
break;
}
else if((rep=='N')||(rep=='n'))
{ printf("Merçi d'Appuyer sur une touche pour Quitter\n");
break;
}
else
printf("Erreur Vueillez Appuyez sur O pour Oui ou N pour Non \n");

} while((rep!='O')||(rep!='o'));
getchar();
return 0;
}


Configuration: Windows Vista / Safari 53
0
JavaMafia.com
17 déc. 2010 à 17:24
il faut que vous même de faire un éffort parce que je crois que votre problème c'est un exercice à vous de le résoudre, ici on résoud pas les exercices :)
0