Questions sur les boucles

Résolu
cs_akaras Messages postés 20 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 28 juillet 2004 - 26 juil. 2004 à 17:27
cs_akaras Messages postés 20 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 28 juillet 2004 - 28 juil. 2004 à 18:16
Bonjour à tous,

J'aimerai faire une boucle infinie pour raffraichir des infos ...

Le probleme quand je fait

while(1)
[
{
}


Le programme plante, logique ...

Est il possible en c++ de definir un tempo entre chaque boucle ?

Merci !

13 réponses

leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
26 juil. 2004 à 22:20
moi jopterais plutot pr le
for ( ; sleep (time) ; );
3
cs_akaras Messages postés 20 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 28 juillet 2004
26 juil. 2004 à 17:34
( sans le [ desole ... )
0
Hades53 Messages postés 231 Date d'inscription mercredi 12 février 2003 Statut Membre Dernière intervention 7 juillet 2009
26 juil. 2004 à 17:50
J'ai pas trop compris ce que tu veux faire mais bon:

Pour faire une boucle de 10 secondes:

int t = GetTickCount();
while (GetTickCount() - t < 10000) ;
0
Hades53 Messages postés 231 Date d'inscription mercredi 12 février 2003 Statut Membre Dernière intervention 7 juillet 2009
26 juil. 2004 à 17:54
Aussi si tu veux faire une boucle infinie, il est plus judicieux d'utiliser des goto:

inf:
goto inf;
0

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

Posez votre question
cs_akaras Messages postés 20 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 28 juillet 2004
26 juil. 2004 à 18:05
merci de ta reponse Hades53.

Quelle est la difference entre While et goto?
0
MetalDwarf Messages postés 241 Date d'inscription mardi 29 octobre 2002 Statut Membre Dernière intervention 23 janvier 2006
26 juil. 2004 à 18:14
en fait il n y en a presque aucune dans ce cas (je pense meme que certains compilateurs doivent opyimiser pour que ca devienne la meme chose.
Mais les goto, c est pas beau...

En fait le probleme avec les boucles while(1) sous windows et Linux aussi c est que du coup le processus prend toutes les ressources du systeme ou presque.

La solution est de mettre un Sleep(100) par exemple sous windows (qui dort 100ms) ou un usleep(1000) sous Linux.
0
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
26 juil. 2004 à 19:03
comme boucle infinie t'as aussi:
for(;;)
{

}
0
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
27 juil. 2004 à 16:16
ah interessant ! je connaissais pas ca
0
cs_akaras Messages postés 20 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 28 juillet 2004
28 juil. 2004 à 09:03
J'ai un probleme lors de la compilation j'ai le message suivant :

 error C2451: conditional expression of type 'void' is illegal
        Expressions of type void cannot be converted to other types


Voici ma boucle qui sert a rafraichir la lecture d'un port parallele.

for (;Sleep (100);)
{
int Valleur;
Valleur  = Inp32(0x379);
SetDlgItemInt(hwnd , IDC_AFFICHAGE_DONNEE, Valleur, 0); // On affiche
}


J'utilise un driver virtuel, ici c'est Inp32 et 0x379 est l'adresse.
Merci
0
cs_akaras Messages postés 20 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 28 juillet 2004
28 juil. 2004 à 09:04
J'ai oublie de preciser que le probleme est apparu avec

for (;Sleep (100);)
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
28 juil. 2004 à 13:30
dsl, cest moi ki ait fait une faute de frappe impardonnable, cest
for ( ; ; sleep (100) )
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
28 juil. 2004 à 13:33
bon rapide cours partiel sur la boucle alors, que tu comprenne ton erreur.
le premier parametre du for est la condition d'initialisation, la seconde est celle de sortie (d'ou l'erreur, il faut un booléen et sleep ne renvoie rien....), et le troisieme est une instruction a éxécuter au debut de chaque nouvelle itération. on peut ne pas mettre un des parametre.
0
cs_akaras Messages postés 20 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 28 juillet 2004
28 juil. 2004 à 18:16
Ok merci bien leprov !
0
Rejoignez-nous