Comment casser l'éxécution d'une boucle en C++ ?

Comment casser l'éxécution d'une boucle en C++ ? - Programmation

Marsh Posté le 06-04-2001 à 18:12:43    

Comment casser l'éxécution d'une boucle en C++ (Borland C++ builder 5) ? SVP

Reply

Marsh Posté le 06-04-2001 à 18:12:43   

Reply

Marsh Posté le 06-04-2001 à 18:14:14    

break ?

Reply

Marsh Posté le 06-04-2001 à 18:15:05    

koi ??!! ca marche plus le bon vieux break ?? ou c t ptetre exit... hmmm... c le week-end et mon neurone est déjà parti :D

Reply

Marsh Posté le 06-04-2001 à 18:24:16    

break, ou un bool qui contrôle
bah le bon vieux goto...
for/while
{
if( tamer )
  break; ou goto tchao;
}
 
tchao: ; /// si goto  
 
peut être utile, mais les profs détestent ;) mdr
 
c toi qui voit

Reply

Marsh Posté le 06-04-2001 à 18:41:05    

Je comprend que moyennement, que signifie "tameré ?

Reply

Marsh Posté le 06-04-2001 à 18:45:13    

:lol:
 
c'est rien, c'est juste ta condition pour savoir si tu dois sortir de ta boucle !


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 06-04-2001 à 19:08:39    

en effet, c'est tout bete :ouch:

Reply

Marsh Posté le 06-04-2001 à 22:41:59    

y'a aussi return c'est un peu viloent comme interruption de boucle mais bon ... (attention, ca arrete aussi la fonction ou se trouve la boucle).
 
Sinon il y 'a :
  char* toto=(char*)NULL;
  *toto=0;

Reply

Marsh Posté le 06-04-2001 à 22:51:52    

tout simplement:
 
while (!fini)
{
  instructions
}
 
 ;)
 
où "fini" est un bool

 

[edit]--Message édité par End-i--[/edit]

Reply

Marsh Posté le 07-04-2001 à 18:09:10    

l'instruction last; marche t'elle???
 
last if(condition);


---------------
Vous n'avez pas visiter infomatériel??? Dites-vous que vous payez trop cher! Plus de 300 items dans plus de 100 commerces!!! Un must, une première québecoise!
Reply

Marsh Posté le 07-04-2001 à 18:09:10   

Reply

Marsh Posté le 08-04-2001 à 03:42:41    

Cybermds> Non pas en C++. Mais on peut la simuler. En définissant la macro suivante:
    #define EXIT_WHEN(condition)  if (condition) break
on peut ensuite écrire dans sa boucle:
    EXIT_WHEN(ma-condition-de-sortie-est-vérifiée);

Reply

Marsh Posté le 08-04-2001 à 10:44:03    

Dans le même genre, les boucles Pascaliennes:
#define REPEAT         do {
#define UNTIL(cond)    } while(!(cond))

Reply

Marsh Posté le 09-04-2001 à 10:47:47    

j'ai juste un petit probleme : Pour arreter et lancer  la boucle, j'ai fait une checkbox mais le probleme est qu'une fois la boucle lancéé, je peux plus décocher la chekbox et donc je peux plus l'arreter!

Reply

Marsh Posté le 09-04-2001 à 10:53:45    

bah pkoi tu peux plus décocher la checkbox ??? t'as plus accès à l'objet représentant ta checkbox ???


---------------
Ne remets pas à demain ce que tu peux faire après-demain ! :sol:
Reply

Marsh Posté le 09-04-2001 à 10:57:09    

Le goto est particulièrement crade car tu ne dépileras jamais l'adresse d'entrée dans la boucle.
 
vw


---------------
The best way to accelerate a computer running windows is at 9.8m.s-2
Reply

Marsh Posté le 09-04-2001 à 11:41:48    

si durant l'éxécution , je la vois toujours mais je clique dessus, ca fait rien ! :fou:

Reply

Marsh Posté le 09-04-2001 à 14:56:58    

LMF a écrit a écrit :

si durant l'éxécution , je la vois toujours mais je clique dessus, ca fait rien ! :fou:




Ce qui est normal non ?
 
Je ne comprend pas le Probleme.
Il n'y a qu'un thread, comment prend-t-il en compte la valeur du controle ?
 
C'est vrai que avec un bout de code ce serait peut-etre plus simple.
 
Il ne faut pas croire a la magie.  
A quoi sert ta boucle ?

Reply

Marsh Posté le 09-04-2001 à 16:53:20    

voici super résumé mon code ;
 
int a;
a=0;
while (CheckBox1->Checked==true)
{a=a+1;
Canvas->TextOut(100,10,FloatToStr(a));
// histoire de remplir la boucle, en realité, mon code éffectue un tri mais peut importe, c'est pas de la que vient le probleme.
};
 
Bilan => une fois lancé on peut plus décocher et donc plus arreter la boucle.

Reply

Marsh Posté le 09-04-2001 à 17:10:02    

c'est normal, tu prog (et donc le thread principal) reste bloqué dans l'éxécution de ta boucle et il ne peux plus réagir aux actions de l'utilisateur; tes clicks de souris ne pourront être pris en compte que lorsque tu sortira de cette boucle ...


---------------
SetiCommander, le setiseur à la chaîne ...
Reply

Marsh Posté le 09-04-2001 à 17:20:55    

Salut,
 
tu peux essayer d'ajouter un Sleep(0) (ou équivalent) dans ta boucle, histoire de redonner un peu la main à ton autre thread qui gère les événements du genre clic de souris etc....
Ca produit à peu près le même effet qu'un yield() en java
 
A++

Reply

Marsh Posté le 09-04-2001 à 17:27:05    

pour l'avoir essayé, le sleep(0); n'arrange rien; il te faut soit couper ton prog en 2 thread, soit ajouter un bout de code dans ta boucle permettant à ton appli de répondre aux messages (genre click de souris)
 
ce bout de code ressemble à ceci :
 
// Read all of the messages in this next loop,  
// removing each message as we read it.
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))  
{  
    // Dispatch the message.
    DispatchMessage(&msg);
} // End of PeekMessage while loop.


---------------
SetiCommander, le setiseur à la chaîne ...
Reply

Marsh Posté le 09-04-2001 à 20:22:50    

sous delphi tu résous ce problème en insérant dans ta boucle un application.processmessages, sous builder cela doit etre application->processmessages.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed