Controle des caracteres dans une boucle

Fermé
simon - 3 mai 2008 à 20:33
Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 - 4 mai 2008 à 12:28
Bonjour,
observez cette boucle que j'ecris souvent pour proposer à mes utilisateus de relancer mes programmes

int a=3; t=1
do
{
.
.
.
[corp du programme]
.
.
.
do
{
printf("voulez vous recommencer ? (tapez 1 pour oui ou 0 pour non");
scanf("%d",&a);
}
while((a!=0)||(a!=1));
if(a=1)
t=1;
}
while(t=1);

ceci suppose que la boule ne fonctionne q'avec 1 ou 0 mais lorsqu 'on insere un caractere alphabetique, j'ai une sorte de boucle infinie. comment cotroler ces caractères pour qu'il ne dérange plus mes programmes
A voir également:

5 réponses

CaporalDead Messages postés 209 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 23 mars 2011 6
3 mai 2008 à 20:37
Je dis surement une bêtise mais bon, essaie avec les valeurs hexa des touches peut être.
0
artragis Messages postés 481 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 6 avril 2010 146
3 mai 2008 à 20:40
je ne comprends pas pourquoi une telle boucle. un simple If aurait été plus simple. aprèsje me trompe peut être.
mais bon... sinon le plus simple ne serait-il pas de mettre la variable a en string, ainsi pas de bug. car en effet là tu établies une convertion implicite d'une chaine en integer. et si ta chaine est une lettre, bah ça bug. le programme ne sait pas quoi faire... tant dis qu'avec un string il vérifiera que c'est la chaine "0" ou la chaine "1" pas plus... après je sais pas
0
Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 125
3 mai 2008 à 20:51
Bonjour,

if(a=1)

while(t=1);


L'opérateur d'égalité est ==, un = simple est une affectation.



M.
0
tchsimons Messages postés 191 Date d'inscription samedi 3 mai 2008 Statut Membre Dernière intervention 24 novembre 2012 14
3 mai 2008 à 21:28
c'est une ereur
0
excuse moi je ne comprend pas "mettre la variable a en string" comment cela s'utilise?
0
artragis Messages postés 481 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 6 avril 2010 146
4 mai 2008 à 07:58
il y a plusieurs types de variables : entier(integer) reel simple(single) reel double (double) chaine de caractère (string)
en somme au départ tu dois déclarer ta variable en tant que chaine (string) puis dans tes boucles tu ajoute des guillemet aux "1", "0". SEULEMNT POUR LA VARIABLE a.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 125
4 mai 2008 à 12:28
C'est une bien grande machinerie pour si peu. En plus il faudra une fonction de comparaison de chaînes.

Une solution plus légère serait d'utiliser un seul caractère au lieu de toute une chaîne.

Mais la solution la plus logique est d'utiliser des unsigned int (déjà, à moins que les choix puissent être négatifs) et de vérifier l'état de la lecture via la valeur de retour de scanf. C'est quand même à ça qu'elle sert...

M.

(les simples = dans les conditions sont corrigés ?)
0