Problème timer boucle

Résolu
psykostik Messages postés 23 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 30 mai 2006 - 20 avril 2006 à 09:19
psykostik Messages postés 23 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 30 mai 2006 - 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

8 réponses

Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
20 avril 2006 à 10:41
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.
3
psykostik Messages postés 23 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 30 mai 2006
20 avril 2006 à 09:34
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 ;)
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
20 avril 2006 à 10:22
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...
0
psykostik Messages postés 23 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 30 mai 2006
20 avril 2006 à 10:27
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).
0

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

Posez votre question
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
20 avril 2006 à 10:28
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 ?
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
20 avril 2006 à 10:29
La première ligne de ton code, c'est if(val < 18), ou while(val < 18) ???
0
psykostik Messages postés 23 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 30 mai 2006
20 avril 2006 à 10:35
if(val<18)
0
psykostik Messages postés 23 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 30 mai 2006
20 avril 2006 à 10:45
merci beaucoup, je ne m'étais meme pas rendu compte de çà
0
Rejoignez-nous