Recommencer programme avec chaine de char "oui" et "non"
Bonjour à tous !
Je me présente vite fait, Pierre, 20 ans, étudiant en première année Math-info
a l'issus de mes TP infos, je me réserve le plaisir de "paufiner" mes codes en soignant l'affichage à l'écran, les printf et autres compléments (précisions/praticité etc..)
Ma question va surement vous paraître très bête, mais à l'issus des programmes, j'aime bien demander à l'utilisateur s'il souhaite recommencer, pour cela nous avons appris 2 méthodes :
- avec oui(1) et non(2)
- avec oui(o) et non(n)
Seulement, ayant le soucis du détail, cela fait 2 semaines que je me casse la tête a essayer de le faire avec des chaines de caractères comparées (oui) et (non) et je n'y arrive pas ! mon test d'entrée en boucle foire complètement et je me suis résolu a "abandonné " ( ---> demandé de l'aide :p )
ce que je veux, c'est qu'à la fin de mon programme, le printf
Code:
printf("Voulez-vous recommencer ? [oui] [non]\n");
analyse la réponse de l'utilisateur, l'enregistre dans un tableau de char (scanf %s) , compare les 2 chaines, si l"utilisateur a entrée "oui" alors le programme recommence, s'il a rentré "non", on sort de la boucle, c'est pourtant très simple a expliquer, mais si dur a programmer.. pourquoi ?
voici mon code, je sais que le test d'entrée en boucle ne marche pas, cependant si je me résous a changer le test d'entrée en boucle "foireux" par un vulgaire "oui(o) non(n)" je vous assure que celà marche tres bien ;)
pouvez-vous m'aider a programmer ce test d'entrée en boucle demandé en fin de programme ? ma méthode n'est surement pas la bonne, les votre sont plus que la bienvenue :)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
int main (void)
{
int x, max=1000001, min=0, compt=0, a, flag, reco;
char oui[]= "oui", /*chaine de caractère fixe (PS : voir commentaire fin de programme) */
non[4]=0; /*le tableau dans lequel serait stockée la réponse de l'utilisateur */
compt=1;
srand(time(0));
flag=0;
do
{
printf("Bonjour, entrez le nombre que je dois deviner de 0 à 1000000 :\n");
scanf("%d", &a);
x=rand()%max + min;
while(x!=a)
{
printf("|[Machine] : Je pense que le nombre mystère est : %d|\n", x);
printf("|---------------------+-------------------------------------------+\n");
printf("|[Administrateur] : Mauvaise réponse, essaye encore... |\n");
printf("|---------------------+-------------------------------------------+\n");
flag++;
printf("|[Machine] : L> Echec numéro : %d |\n", flag);
printf("|---------------------+-------------------------------------------+\n");
if(x>a)
{
max=x;
}
else
{
min=x;
compt++;
x=rand()%(max-min) + min;
}
}
printf("Après %d tours, j'ai trouvé le nombre mystère : %d \n", compt, x);
printf("Voulez vous recommencer ? [non] / [oui]\n");
printf("%s", non);
}
while(reco=1); /* j'ai pensé a faire une fonction qui comparerai les 2 chaines avec strcomp et qui renverrait 1 si les chaines été identiques ("oui" serait fixe et non modifiable et non serait la réponse de l'utilisateur et 0 si elles étaient différentes, cette "valeur" serait affecté a la variable de type int "reco" .. la encore je n'ai pas réussi a faire cette fonction*/
return 0;
} |
voilà, merci de m'avoir lu :) si vous pouviez m'aider cela serait très aimable car je le veut ce test d'entrée/sortie de boucle en oui/non en fin de programme :oops: