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 : Sélectionner tout - Visualiser dans une fenêtre à part
 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 : 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;
 }
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