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
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 ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part printf("Voulez-vous recommencer ? [oui] [non]\n");
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
voilà, merci de m'avoir lu
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }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
![]()
Partager