IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

probleme avec la boucle do while


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 40
    Par défaut probleme avec la boucle do while
    Mon programme boucle infiniment et je ne sait pas pourquoi. C'est un programme qui resoud les sudoku.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    void back(int col,int ligne)
    {
    int val = 1; // pour test de valeur
    if(valeur[col][ligne] == 0) // afin d'éviter qu'il ne test sur un nombre déja inscrit par l'utilisateur
    {
    	do
    		{
    			if(colo(col,val) && lign(ligne,val) && cas(col,ligne,val))// test si le nombre est déja présent dans la case, la ligne ou la colone
    				{
    					valeuressai[col][ligne] = val; //enregistre la valeur dans un tableau 9 9 d'essai
    					if(col == 9)
    						{
    							if(ligne == 9)
    								{
    									enregistrer();//copie le tableau d'essai dans l'original si il a fini
     
    								}
    							else
    								{
    									back(0,ligne++); // sinon tester la case suivante
    								}
    						}
    					else
    						{
    							back(col++,ligne);
    						}
    				}
    			val++;
    		}while(val < 10);
    }
    else // idem qu'au dessu mais sans le test de valeur(:) il y en a deja une
    	{
    		if(col == 8)
    			{
    				if(ligne == 8)
    					{
    						enregistrer();
    					}
    				else
    					{
    						back(0,ligne++);
    					}
    			}
    		else
    			{
    				back(col++,ligne);
    			}
    	}
    }

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    simplement parce que fais des appels imbriqués infinis à back...

    Ecrit en texte ton algo, et vérifie ensuite avec ce que tu as écris... tu verras ça te sautera aux yeux..

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 40
    Par défaut
    justement, j'ai fais l'inverse. je suis parti d'un algorithme texte pour le réecrire en C.
    Puis j'ais fais un test, je lui ai demandé d'écrire chaque fois qu'il enregistrait une réponse dans "valeuressai", la coordonée du point et sa valeur mais il me réecrit chaque fois la meme coordonee avec la meme valeur.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 40
    Par défaut
    J'ai cerné le probleme mais ne trouve pas la solution.
    En fait, il se réapelle mais il ne changent pas de colonne.
    j'ai essayé plusieurs possibilité mais les autre ne fonctionne pas.

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    parce que, si tu veux changer les valeurs de col et de ligne, ce que tu fais en faisant col++ et ligne++, il faut que tu puisses faire ressortir les valeurs modifiées, et donc il faut passer des pointeurs pour col et ligne...

  6. #6
    Membre expérimenté
    Profil pro
    DEV
    Inscrit en
    Août 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DEV

    Informations forums :
    Inscription : Août 2006
    Messages : 182
    Par défaut
    en bref,

    Change ta fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     void back(int col,int ligne)
    Par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     void back(int *col,int *ligne)

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 40
    Par défaut
    Non, j'ai retravaillé dessus et meme avec les pointeur, ca ne fonctionne pas. Le probleme maintenant, c'est qu'il ne fait qu'une partie des exécution et qu'il s'arrete avant la fin. Il revient en arrière si c'est pas possible avec une valeur mais apres une vingtaine d'éxécution ,il s'arrète sans message d'erreur. Pourquoi???

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Montre le code..

Discussions similaires

  1. probleme avec une boucle infinie
    Par hunter99 dans le forum C++
    Réponses: 3
    Dernier message: 26/12/2007, 23h37
  2. Probleme avec une boucle
    Par virtuadrack dans le forum C
    Réponses: 2
    Dernier message: 29/11/2007, 15h32
  3. Probleme avec une boucle
    Par restesouple dans le forum Windows Forms
    Réponses: 14
    Dernier message: 04/10/2007, 10h47
  4. Probleme avec la boucle for
    Par developpeur82 dans le forum MATLAB
    Réponses: 1
    Dernier message: 31/05/2007, 11h40
  5. [VBA-E] PRobleme avec une boucle DO..LOOP WHILE
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 31/07/2006, 01h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo