Problème timer boucle [Résolu]

psykostik 23 Messages postés mercredi 19 avril 2006Date d'inscription 30 mai 2006 Dernière intervention - 20 avril 2006 à 09:19 - Dernière réponse : psykostik 23 Messages postés mercredi 19 avril 2006Date d'inscription 30 mai 2006 Dernière intervention
- 20 avril 2006 à 10:45
Bonjour, j'ai un problème étrange avec une boucle que je n'arrive pas à résoudre. voici le code :

if(val<18)
{

Tdez.Text = Convert.ToString(val);
if (Tab[val] > Tab[val]+1)
{
compte = val;
do
{

mem = Tab[compte + 1];
Tab[compte + 1] = Tab[compte];
Tab[compte] = mem;
compte = compte - 1;

if (compte < 0)
{
compte = 0;
}

timer1.Start();
timer2.Start();

} while (Tab[compte + 1] < Tab[compte]);

}

val = val + 1;
}

la variable val est une variable static et n'est utilisée qu'ici dans ce code, or malgrès le if la boucle ne s'éxécute qu'une fois ( malgrès les 18 fois demandées) et si je mets une boucle for alors la c'est les timers qui ne sont plus respectées car la boucle s'éxecute avant que le timer ne ce soit terminé.

si quelqu'un voit mon erreur ?

par avance merci

un noob
Afficher la suite 

Votre réponse

8 réponses

Nikoui 794 Messages postés vendredi 24 septembre 2004Date d'inscription 19 août 2008 Dernière intervention - 20 avril 2006 à 10:41
+3
Utile
Donc tu l'a dis toi même, Tab[val+1] devient forcement plus grand que Tab[val], donc tu sors tout de suite du while, et ca ne boucle plus...

Par contre, tu dis : ensuit j'incrément val donc je passe à un cas suivant. Ce n'est pas ce que tu fais dans l'exemple que tu as mis ici : tu incrémente val, mais tu ne fais rien d'autre... tu étais dans un if, donc ca ne boucle pas (le if n'est pas une boucle). Tu incrémente val, et tu sors.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Nikoui
psykostik 23 Messages postés mercredi 19 avril 2006Date d'inscription 30 mai 2006 Dernière intervention - 20 avril 2006 à 09:34
0
Utile
juste pour prévenir on voit un if (Tab[val] > Tab[val]+1) c'est une erreur de ma part dans le code c'est if (Tab[val] > Tab[val+1])

Pour que personnne ne me dise que l'erreur est la ;)
Commenter la réponse de psykostik
Nikoui 794 Messages postés vendredi 24 septembre 2004Date d'inscription 19 août 2008 Dernière intervention - 20 avril 2006 à 10:22
0
Utile
Dans ton premier if, tu test si Tab[val] > Tab[val + 1], et tu rentre si c'est vrai...
Ensuite, tu inverse ces deux éléments.
Puis tu boucle tant que Tab[val +1] < Tab[val]...
Ce qui est forcément faut puisque c'était vrai mais que tu viens de les inverser...

Tu ressors donc tout de suite de ta boucle apres la premiere inversion...
Commenter la réponse de Nikoui
psykostik 23 Messages postés mercredi 19 avril 2006Date d'inscription 30 mai 2006 Dernière intervention - 20 avril 2006 à 10:27
0
Utile
Non car en utilisant ma fonction j'inverse les nombres, de ce fait Tab[val+1] devient forcement plus grand que Tab[val] au bout d'un moment mais ensuit j'incrément val donc je passe à un cas suivant, donc je sors normalement quand tout les cas de mon tableau sont analysés or la j'analyse que la première valeur malgrès le if(val<18).
Commenter la réponse de psykostik
Nikoui 794 Messages postés vendredi 24 septembre 2004Date d'inscription 19 août 2008 Dernière intervention - 20 avril 2006 à 10:28
0
Utile
Comme tu le dis, Tab[val+1] est plus grand que Tab[val], donc tu sort du while, tu sors tu if, tu incrémente val, tu sors de l'autre if... et fin du code. A moins qu'il y est une autre boule ?
Commenter la réponse de Nikoui
Nikoui 794 Messages postés vendredi 24 septembre 2004Date d'inscription 19 août 2008 Dernière intervention - 20 avril 2006 à 10:29
0
Utile
La première ligne de ton code, c'est if(val < 18), ou while(val < 18) ???
Commenter la réponse de Nikoui
psykostik 23 Messages postés mercredi 19 avril 2006Date d'inscription 30 mai 2006 Dernière intervention - 20 avril 2006 à 10:35
0
Utile
if(val<18)
Commenter la réponse de psykostik
psykostik 23 Messages postés mercredi 19 avril 2006Date d'inscription 30 mai 2006 Dernière intervention - 20 avril 2006 à 10:45
0
Utile
merci beaucoup, je ne m'étais meme pas rendu compte de çà
Commenter la réponse de psykostik

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.