Rechercher : dans
Par :

Je bloque sur un truc tout simple en C

Dernière réponse le 11 nov 2009 à 11:35:50 max08111991, le 11 nov 2009 à 09:04:03 
 Signaler ce message aux modérateurs

Bonjour,
je bloque sur un truc tout simple en C
mais je ne me rappelle plus comment le faire

voila mon problème: j'ai un petit programme qui fonctionne parfaitement mais quand j'arrive a la fin
je voudrais afficher une phrase qui demande si l'utilisateur veut recommencer ou quitter

j'ai donc une ligne de code

printf("\t\t "Voulez vous revenir au debut de ce programme? (o/n)");

si il répond 'o' il retourne au début

si il répond 'n' il quitte le programme

qu'est ce que je dois écrire pour que sa fonctionne???????????

Configuration: Windows XP
Firefox 3.0.12

1

max08111991, le 11 nov 2009 à 09:37:43

En gros ......

comment je peut comparer une lettre que j'écrit au clavier avec une lettre prédéfinie????????? "Ne dites jamais à votre ordinateur que vous êtes pressés"

Répondre à max08111991

2

Pacorabanix, le 11 nov 2009 à 09:38:25

Mettre ton programme dans une boucle, et a la fin tu demandes une confirmation. Selon le résultat que l'utilisateur te donne tu mets une variable à "true", c-à-d si true n'existe pas tu la mets à 1 ou à n'importe quelle valeur non zéro. Sinon, tu mets la valeur à zéro. Pour la boucle principale tu testeras cette valeur.

Voici uin exemple, je ne suis pas sûr de la syntaxe de getchar() mais c'est juste pour te faire une idée.

do {
 TON CODE

 printf("voulez vous... ?");
 touchetapee=getchar();

 if (touchetapee=='o'|| touchetapee=='O') 
    repeter = 1;
  else
    repeter =0;

} while (repeter)

Répondre à Pacorabanix

3

max08111991, le 11 nov 2009 à 09:42:14

Le repeter c'est quoi??????? "Ne dites jamais à votre ordinateur que vous êtes pressés"

Répondre à max08111991

4

Pacorabanix, le 11 nov 2009 à 09:43:33

Pardon, repeter c'est juste un int que tu déclares avant la boucle.

Cette variable fera 0 ou 1 (false ou true) selon la touche que tu taperas, et c'est elle qui fera que tu fais la boucle ou pas.

Répondre à Pacorabanix

5

max08111991, le 11 nov 2009 à 09:46:10

Ah ok ok je vais essayer tout ca !!!! ^^ "Ne dites jamais à votre ordinateur que vous êtes pressés"

Répondre à max08111991

6

max08111991, le 11 nov 2009 à 09:51:48

Oulllla la
sa fait beaucoup d'erreur tout sa

comment je dois déclarer ma variable touchetapee?????????????????

"Ne dites jamais à votre ordinateur que vous êtes pressés"

Répondre à max08111991

7

max08111991, le 11 nov 2009 à 09:59:46

Voila maintenant je n'ai plus d'erreur....

il me demande "Voulez vous revenir au debut de ce programme? (o/n)"

mais la je ne peut rien écrire...... il sort de la boucle tout seul "Ne dites jamais à votre ordinateur que vous êtes pressés"

Répondre à max08111991

8

Pacorabanix, le 11 nov 2009 à 10:02:13

Oui, il faut que tu demandes une touche à l'utilisateur, je ne fais pas trop de C, plutôt le C++, alors là en détail je ne sais pas comment on fait. Je pensais que la fonction getchar() pouvait le faire... PS : touchetapee est bien un char ?

Répondre à Pacorabanix

9

max08111991, le 11 nov 2009 à 10:03:21

Oui oui touchetapee est un char

mais je comprend pas non plus pourquoi il me demande pas d'entrer une touche "Ne dites jamais à votre ordinateur que vous êtes pressés"

Répondre à max08111991

10

max08111991, le 11 nov 2009 à 10:12:52

J'ai trouvé ceci

printf("Voulez vous revenir au debut de ce programme? (o/n)");
scanf("%s",confirmation);

if(confirmation=='o'|| confirmation=='O');
goto debut;
if(confirmation=='n'|| confirmation=='N');
printf("Appuiez sur Enter pour quitter le programme");
getch();
}

il compile bien mais quand je marque o ou n il me met un message d'erreur

monpgm.c a rencontré une erreur et doit fermer
envoyer le rapport d'erreur /// ne pas envoyer


"Ne dites jamais à votre ordinateur que vous êtes pressés"

Répondre à max08111991

11

max08111991, le 11 nov 2009 à 10:19:47

Bon j'ai trouvé d'ou le message d'erreur venait
maintentant j'ai ca :

printf("Voulez vous revenir au debut de ce programme? (o/n)");
scanf("%s",&confirmation);

if(confirmation=='o'|| confirmation=='O');
goto debut;
if(confirmation!='o'|| confirmation!='O');
goto end;

end:
printf("Appuiez sur Enter pour quitter le programme");
getch();

mais peut importe ce que j'écris il revient toujours au début!!!!!!!!!!!!
"Ne dites jamais à votre ordinateur que vous êtes pressés"

Répondre à max08111991

12

max08111991, le 11 nov 2009 à 10:44:40

Je ne sais pas pourquoi mais c'est le o majuscule qui posait problème!!!!!!!!!!!!

j'ai enlevé le || confirmation=='O'

et sa fonctionne parfaitement!!!! "Ne dites jamais à votre ordinateur que vous êtes pressés"

Répondre à max08111991

13

Pacorabanix, le 11 nov 2009 à 11:31:18

Ok alors remplace :
( confirmation=='o'|| confirmation=='O')

par ( (confirmation=='o') || (confirmation=='O') )

si tu veux permettre à l'utilisateur de taper o même si son "Verr. Maj." est activé, là ça devrait marcher avec les parenthèses en plus ;) .

bonne continuation, et n'oublie pas de mettre le sujet en "Résolu" !

Répondre à Pacorabanix

14

 max08111991, le 11 nov 2009 à 11:35:50

Un grand merci

sa fonctionne parfaitement!!!!! "Ne dites jamais à votre ordinateur que vous êtes pressés"

Répondre à max08111991
Collection CommentÇaMarche.net