begin process at 2012 05 29 20:56:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

probleme de boucle... Urgent !


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

probleme de boucle... Urgent !

jeudi 2 décembre 2004 à 15:43:38 | probleme de boucle... Urgent !

AshenShugar

Salut tout le monde,
voila, j'ai un morceau de code qui est celui-ci :

while ((Ligne <= 1)||(Ligne > 20))
{
Ligne = 0;
printf("\nSaisissez le nombre de lignes (entre 2 et 20):\n");
scanf("%d", &Ligne);
}

Je veux que ca me repetes la question quand l'utilisateur n'a pas saisi un truc correct. Mais le problème, c'est quand qu'a erreur, la boucle se répète à l'infini sans jamais s'arreter pour que l'utilisateur ressaisse un nombre.
Que puis-je faire pour parer ca ?
Merci beaucoup
jeudi 2 décembre 2004 à 17:27:19 | Re : probleme de boucle... Urgent !

asmanur

utilise plutot
Ligne = 0 ;
do{
Le contenu de ta boucle ici
}while((Ligne <= 1)||(Ligne > 20)) ;
ce qui fait que les instructions sont executés au mois une fois
jeudi 2 décembre 2004 à 18:46:01 | Re : probleme de boucle... Urgent !

yserver

je te conseil la lecture de "Le langage C" de Henri Garreta +86 telechargeable sur le site developpez.com
Le fonctionnement de scanf f peut genere ce genre de pb en fonction de ce que tu lui passe comme parametre a toi de revoir le parametre

rapide copier coller si necessaire :

La fonction de lecture avec format `a l?unit´e d?entr´ee standard (en principe le clavier du poste de travail) est
scanf( format , adresse1 , adresse2 , ... adressen )
L?argument format est une cha?ýne qui indique la mani`ere de convertir les caract`eres qui seront lus ; adresse1,
adresse2, ... adressen indiquent les variables devant recevoir les donn´ees lues. Ce sont des  sorties  de la
fonction scanf, par cons´equent il est essentiel que ces arguments soient des adresses de variables `a lire.
La fonction scanf constituant un vrai analyseur lexical, les donn´ees lues ont de nombreuses occasions d??etre
incorrectes et on peut s?attendre `a ce que scanf soit d?un maniement difficile. L?exp´erience ne d´e¸coit pas cette
attente ! Voici un bon conseil : si un programme ne fonctionne pas comme il le devrait, commencez par v´erifier
les valeurs lues par la fonction scanf (par exemple avec des appels de printf suivant imm´ediatement les appels
de scanf).
Fonctionnement : scanf parcourt le format. Elle rend la main lorsque la fin du format est atteinte ou sur
une erreur. Jusque-l`a :
? Tout caract`ere ordinaire du format, c?est-`a-dire qui n?est ni un caract`ere d?espacement (blanc, tabulation)
ni un caract`ere faisant partie d?une sp´ecification de format (commen¸cant par %), doit s?identifier au caract`
ere courant du flot d?entr´ee. Si cette identification a lieu, le caract`ere courant est lu, sans ?etre rang´e
dans aucune variable, et le parcours du format se poursuit. Si l?identification n?a pas lieu, l?activation de
scanf se termine.
? Les sp´ecifications de format commencent par %. Elles indiquent la mani`ere d?analyser les caract`eres lus
sur le flot d?entr´ee et de ranger les valeurs ainsi obtenues. Voir le tableau 5.
? Dans le format, les caract`eres ordinaires et les sp´ecifications peuvent ?etre s´epar´es entre eux par des
caract`eres d?espacement. Le nombre de ces espacements est sans importance, mais leur pr´esence indique
que les donn´ees correspondantes peuvent ?etre s´epar´ees dans le flot d?entr´ee par un nombre quelconque de
caract`eres d?espacement ou de fin de ligne.
? S?il n?y a pas d?espacement, dans le format, entre les caract`eres ordinaires ou les sp´ecifications, alors les
donn´ees correspondantes dans le flot d?entr´ee doivent ?etre adjacentes.
? Cependant, les espacements au d´ebut des nombres sont toujours saut´es.
On peut m´elanger des appels de scanf et d?autres fonctions de lecture. Chaque appel d?une telle fonction
commence par lire le premier caract`ere que l?appel pr´ec´edent n?a pas  consomm´e .
jeudi 2 décembre 2004 à 20:10:32 | Re : probleme de boucle... Urgent !

AshenShugar

Merci YServer, mais là, tu m'aidespas beaucoup...
Asmanur, j'ai essayé ta technique, et ça marche pas non plus. En fait, je lui demande donc un nombre avec scanf("%d", Ligne); tel que me le fais gentiment remarqué YServer avec ses trois pages de copier coller !!
Mais lorsque je saisis par exemple A ou un tout autre caractère suivi de la touche "ENTREE", ca me repete la boucle sans plus s'arreter sur le scanf.
Y a t il un moyen pour que le scanf reprenne la main meme si c'est un caractère ?! Ou alors un moyen de bloquer carement la saisie de caractère ?
Merci...
Ca me fait chier, plus que ce probleme la a resoudre et mon programme est opérationnel.
Bye tlm
jeudi 2 décembre 2004 à 20:36:17 | Re : probleme de boucle... Urgent !

6co

Réponse acceptée !
petite solution vite faite pour pallier à ce problème, mais ça complique un poil, si quelqu'un a plus simple je suis preneur...



#include <stdio.h>
#include <stdlib.h>

int main()
{
int Ligne=0;
char chaine[20];
while ((Ligne <= 1)||(Ligne > 20))
{
Ligne = 0;
printf("\nSaisissez le nombre de lignes (entre 2 et 20):\n");
scanf("%s", chaine);
Ligne=atoi(chaine);
}
}


bonne prog
6co
jeudi 2 décembre 2004 à 23:50:33 | Re : probleme de boucle... Urgent !

AshenShugar

NIICCCKKKKKKKKEEEEEEELLLLLLLLLLL
Merci beaucoup de ton aide. Ca marche du tonnerre !!


Cette discussion est classée dans : ligne, boucle, nombre, urgent, probleme


Répondre à ce message

Sujets en rapport avec ce message

Retours à la ligne [ par Gerald ] Quelqu'un pourrait-il me dire comment faire pour compter le nombre de retours à la ligne dans un fichier texte?voici mon programme Dos:unsigned int n, URGENT : ITEMIDLIST et autres [ par Shouwi ] Bonjours, j'ai un probleme qui m'enerve à un haut point, j'expose le probleme : je me sert d'unGetOpenFileName(LPOPENFILENAME)afin de selectionner plu Probleme urgent !! [ par julnad ] Mon problème est que j'ai réalisé un programme en C et qu'il faut le traduire en C++. L'important est qu'il faut le faire rapidement et le C++ c'est p Probleme rand() et for [ par vanpet ] je suis nouveau en C++ (je migre de VB6) et il y a quelques petites choses que l'aide de Microsoft ne parvient pas a me faire comprendre... (pourquoi probleme de boucle!!! :( [ par matteokun ] matteokunBonjour,Je suis débutant en C++ et j'essai de réaliser le jeu du pendu en C++ mais je rencontre quelques difficultées sur une boucle...Biensu probleme de verification d'une ip ! URGENT !!!!!!! [ par ben01n ] Salut à tousje suis débutant en c et je suis en train de programmer un serveur sous linuxvoila mon problème : mon prog prend une adresse ip comme argu aidez moi svp probleme avec include [ par gdarkblue ] Je suis un debutant . Je programme avec dev c++. Lorsque j'essaye d'inclure certains fichiers .h. Le compilateur trouve une erreur dans le fichier .he Probleme String -> double et long [ par lebalrog ] Salut tout le monde!J'ai un prob urgent a resoudre (tres urgent meme)!je fais :ficin >> ligne;long r=atol(ligne);double a=atof(ligne);avec ligne="0,12 Probleme avec feof [ par wwalker ] Mon prog doit lire chaque ligne d'un fichier input et les recopier dans un fichier output.Probleme, il me copie deux fois la derniere ligne.Je pense q probleme urgent avec borland c++ [ par morgandetoi06 ] ça veut pas me compiler ça:#include typedef struct{string telephone;string nom;string prenom;string surnom;}fi;ça me dit :Nom de ype attendu; manquant


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,384 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales