begin process at 2012 05 28 09:14:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Algorithme

 > 

Maths

 > 

arrêter une boucle infini


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

arrêter une boucle infini

lundi 13 août 2007 à 16:50:03 | arrêter une boucle infini

MirKoRn

Membre Club

je dois faire une boucle do...while pour mon programme (elle doit mélanger aléatoirement un tableau) et je voudrai contrôler a quel moment elle s'arrête en appuyant sur une touche du clavier.

je pense utilisé l'instruction break mais je ne sais pas comment insérer une condition pour que ça soit moi qui décide a quel moment elle s'arrête! c'est pour mélanger des cartes et pour que cela soit vraiement aléatoire je veux pouvoir décider soit le moment ou la boucle s'arrète soit le nombre de secondes que la boucle fait avant de s'arrêter!

Merci

lundi 13 août 2007 à 17:22:01 | Re : arrêter une boucle infini

THEwarrior333

Réponse acceptée !

Salut
L'algorithme est très simple:

temps1 = GetTemps();    // Où GetTemps() est une fonction de ton choix retournant le temps absolu

Do
[ton code]

temps_écoulé = GetTemps() - temps1;
while( appui sur une touche || temps_écoulé >= nombre_de_secondes_souhaité )

Un clavier Azerty en vaut deux

lundi 13 août 2007 à 18:09:36 | Re : arrêter une boucle infini

MirKoRn

Membre Club

merci bcp!!!
je vais essayer de m'en sortir  avec ça!! maintenant GO pour le systeme de brassage du tableau!

lundi 13 août 2007 à 18:15:06 | Re : arrêter une boucle infini

MirKoRn

Membre Club

tu aurais un code comme exemple?
lundi 13 août 2007 à 18:45:32 | Re : arrêter une boucle infini

vecchio56

Administrateur CodeS-SourceS
while( non appui sur une touche && temps_écoulé < nombre_de_secondes_souhaité )

_____________________________________
Un éditeur de ressources gratuit pour Windows

lundi 13 août 2007 à 19:24:36 | Re : arrêter une boucle infini

THEwarrior333


roohhh oui désolé moment de fatigue

Un clavier Azerty en vaut deux

mardi 14 août 2007 à 12:52:17 | Re : arrêter une boucle infini

rt15

Membre Club Administrateur CodeS-SourceS
Salut,

Première remarque, un petit Sleep(1) dans la boucle éviterais au processeur de trop se fatiquer.

Deuxième remarque concernant le codage de "appui sur une touche" : C'est le coup classique de l'application qui ne traite plus ses messages. Elles paraît morte, ne se redessine plus, ne réagit plus aux clique sur ces boutons... Bref, une appli qui boucle. Pourquoi ? Car elle ne traite plus les messages qui lui son envoyés par Windows. Bah vi, elle peut pas boucler et traiter les messages en même temps. Une solution serait de créer un thread spécialement pour le "trie" du tableau, et laisser l'autre traiter les messages. Une deuxième solution est de mettre faire un traitement des messages dans ta boucle. A la place de GetMessage, qui est bloquant jusqu'au prochain message, il faut mettre un PeekMessage. Sinon, ça devrait assez ressembler pour le reste : TranslateMessage puis DispatchMessage. Je sais pas comment est traiter la fin de l'execution de l'appli par contre.
Que tu fasses un thread ou un traitement des messages dans ta boucle, les boutons de ton appli deviennent tous utilisables. Cela peut poser problème, par exemple si tu as un bouton "trier". L'utilisateur peut alors cliquer dessus autant qu'il le veut... Il faut alors désactivé les contrôles de l'interface qui peuvent poser problème.
mardi 14 août 2007 à 18:54:31 | Re : arrêter une boucle infini

vecchio56

Administrateur CodeS-SourceS
Le Sleep ne ferait que réduires les performances, ce n'et pas ce qu'on veut ici
Après, il n'a jamais dit qu'il travaillait sous Windows, si ca se trouve c'est un programme en mode console, et dans ce cas un thread est inutile.

_____________________________________
Un éditeur de ressources gratuit pour Windows

mercredi 15 août 2007 à 21:40:56 | Re : arrêter une boucle infini

rt15

Membre Club Administrateur CodeS-SourceS
Erf, vi il a rien dit. Bah comment tu aurais fais alors ? Les fonctions de lecture sur l'entrée standard que je connais (scanf, gets/fgets, getchar...) sont bloquantes si je ne m'abuse. J'aurais fait ça comme ça (Sous Windows) : #include #include #include // Demande la fin du trie BOOL stop; DWORD __stdcall TrieTableau() { do { // Trie du tableau } while ( ! stop); return 0; } int main() { DWORD id; // id du thread HANDLE hThread; // Handle du thread hThread = CreateThread(NULL, 0, TrieTableau, NULL, 0, &id); printf("Appuyer sur une touche pour stopper le trie\n"); stop = TRUE; WaitForSingleObject(hThread, INFINITE); printf("fin du trie\n"); CloseHandle(hThread); return 0; }
mercredi 15 août 2007 à 21:42:59 | Re : arrêter une boucle infini

rt15

Membre Club Administrateur CodeS-SourceS
Zut j'ai zappé le getch(); avant le stop = TRUE;

1 2

Cette discussion est classée dans : boucle, moment, mélanger, infini, arrêter


Répondre à ce message

Sujets en rapport avec ce message

Boucle infini [ par angelfire0808 ] Voici mon code, par exemple : Code : C do { <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.htm affichage MFC [ par sendouda ] salut tout le monde;je travaille en MFC;En fait j'ai une boucle while dans laquelle je veux afficher au fur et à mesure mais ça ne marche que si je so boucle for bizzard [ par dark_naruto25 ] Salut les amis ! Bon voilà mon problème. J'ai une boucle for tiré d'une programme qui fonctionne correctement. Ce n'est pas moi qui l'ai fait. Pourtan gestion boucle vc++6 [ par jerome86600 ] voila je fais de l acquisition de position d'un joystick dans une boucle pour afficher en temp reel a l ecran les positions. Mais lorsque cette boucle Probleme rafraichissement affichage [ par titouf71 ] Bonjour,Je suis en train d'essayer de developper un soft qui compar la valeur lu sur une carte analogique a une valeur donnée. Je n'ai pas de probleme Boucle de connection client TCP [ par ssmint ] Bonjour à tous,Mon dernier souci en date est de pouvoir créer une un client qui essaie de se connecter toutes les secondes.Je fais donc une boucle ave problème avec rand() [ par ganner ] BonsoirJ'utilise cette boucle dans mon programme pour pouvoir obtenir un nombre aléatoire:while (nbRand 400)    {        nbRand = Travail en arrière-plan [ par Ziman ] Bonjour,je fais une petite application pour copier des fichiers et euh, un moment il y a une boucle for qui s'exécute un grand nombre de fois et le so boucle simple [ par jejeduweb ] Bonsoir! je débute en c++ et j'ai un petit exercice qui me pose probléme. Je dois faire un code qui permet de calculer la somme des diviseur d'un nomb Comparaison et boucle while ; ISO C++ forbids comparison between pointer and integer [ par wizard512 ] Bonjours,Je souhaiterais savoir, svp,qui pourait m'aider pour résoudre un problème,lier a une comparaison et une boucle while,Voici l'erreur obtenue :


Nos sponsors


Sondage...

Comparez les prix

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 : 1,388 sec (4)

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