Rechercher : dans
Par :

Probleme de boucle infini

Dernière réponse le 3 jan 2009 à 17:03:29 varfendell, le 3 jan 2009 à 15:21:40 
 Signaler ce message aux modérateurs

Bonjour,

j'ai un petit souci:
j'ai fait une boucle do{}while{}
mais les element mis dans le while ne sont pas pris en compte :(

do 
{  
    //choix de la nouvelle case:
        x = (rand() % 8);
        if ( ((bugi + imove[x])<= m) && ((bugi + imove[x])>= 0) && ((bugj + jmove[x])<= n) && ((bugj + jmove[x])>= 0) )
        {
            bugi = bugi + imove[x];
            bugj = bugj + jmove[x];
            tab[bugi-1][bugj-1]++;
            nbdeplacement++;
        }
        test = 0;
        for (i = 0; i <= m-1; i++)
        {
            for (j = 0; j <= n-1; j++)
            {
                if (tab[i][j] == 0)
                {
                      test = 1;
                }
            }
        }
} while (test = 1 || nbdeplacement <= 10);
La vérité appartient à ceux qui la cherchent et non point à ceux qui prétendent la détenir.
(n'oubliez pas de mettre résolu si vous avez trouvé votre   bonheur: pensez aux autres^^')
Configuration: Windows Vista
Firefox 3.0.5

Meilleures réponses pour « probleme de boucle infini » dans :
Firefox bloque les boucles de redirection VoirProblème Comment faire pour que Firefox tienne compte des boucles de redirection ? Solution La configuration de Firefox limite parfois le nombre de redirection enchainées, ce qui génère cette erreur. Pour ne pas avoir ce problème il faut modifier...
ADSL - Le dégroupage de la boucle locale VoirIntroduction au dégroupage de la boucle locale On appelle "boucle locale" la partie finale de la ligne téléphonique arrivant à l'abonné. Afin de vous faire profiter de l'internet à haut débit (ADSL), les Fournisseurs d'Accès à Internet (FAI)...

1

Marco la baraque, le 3 jan 2009 à 15:41:53

Bonjour,
Essaie avec while (test == 1 || nbdeplacement <= 10);
test = 1 c'est une affectation, donc c'est toujours vrai (et donc ta condition OR est vérifiée, d'où la boucle infinie).

Cordialement, rtfm and jfgi

Répondre à Marco la baraque

2

varfendell, le 3 jan 2009 à 15:49:49

Wow, sa marche, c'était tout con. merci beaucoup.
par contre la deuxième condition n'intervient hélas pas, tu sais pourquoi?
j'ai mis si il y a plus de 10 déplacement, on arrête la boucle, et la boucle continu alors que les dix déplacement on été fait :s La vérité appartient à ceux qui la cherchent et non point à ­ceux qui prétendent la détenir.
(n'oubliez pas de mettre résolu si vous avez trouvé votre   ­bonheur: pensez aux autres^^')

Répondre à varfendell

3

Marco la baraque, le 3 jan 2009 à 15:56:46

Euh, en mettant un && à la place du ||.
Ta condition ici peut se traduire par "tant que test égal 1 , ou que le nombre de déplacements est inférieur ou égal à 10, je continue ma boucle".
Si ton test vaut 1, ta boucle va continuer (même si ton nombre de déplacements est supérieur à 10, ce qui n'arrivera pas avec un &&).

Cordialement, rtfm and jfgi

Répondre à Marco la baraque

4

varfendell, le 3 jan 2009 à 16:43:03

A oui, je suis stupide...

un grand merci a toi La vérité appartient à ceux qui la cherchent et non point à ­ceux qui prétendent la détenir.
(n'oubliez pas de mettre résolu si vous avez trouvé votre   ­bonheur: pensez aux autres^^')

Répondre à varfendell

5

 Marco la baraque, le 3 jan 2009 à 17:03:29

Mais non, une erreur idiote passe souvent inaperçue, c'est aussi simple que cela.

A la prochaine ! rtfm and jfgi

Répondre à Marco la baraque