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 :

Comment incrémenter une variable passée en paramètre à une fonction récursive


Sujet :

C

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2011
    Messages : 247
    Par défaut Comment incrémenter une variable passée en paramètre à une fonction récursive
    Salut à tous!
    J'essaye de faire un programme qui résoud le casse-tête des huit reines. IL s'agit de placer sur un échiquier 8 reines sur des diagonales,des verticales et des horizontales différentes.
    Voila le problème c'est que je n'arrive pas à arréter la fonction qui remplit l'échiquier, et le but de l'exercice est de retourner le nombre total de possibilités. Je voulais donc incrémenter une variable "soluce" à chaque fois que le programme réussit à placer huit reines.
    Mais quand je teste, le programme donne toujours à "soluce" des valeurs aléatoires. Le code:
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    void fill(int tab[8][8],int n, int soluce,int end)
    {
    	int i,j,k=-1;
    	char c;
    	//printf("SOLUCE_deb %d\n", *soluce);
    	if((end)!=2)
    	{
    		/*if(tab[0][7]==8)
    		{
    			scanf("&c",c);
    			printf("s%d",tab[0][7]);
    			(end)++;
    		}*/
    		for(i=0;i<8;i++)
    		{
    			if(tab[n][i]==8)
    			{
    				k=i;
    				cancel(tab,n,i);
    				break;
    			}
    		}
    		for(j=k+1;j<8;j++)
    		{
    			if(tab[n][j]==0)
    			{
    				lock(tab,n,j);
    				k=-2;
    				break;
    			}
    		}
    		if(k!=-2)
    		{
    			fill(tab,n-1,soluce,end);
    		}
    		if((n!=7)&&(k==-2))
    			fill(tab,n+1,soluce,end);
    		if((n==7)&&(k==-2))
    		{
    			//printf("soluce: %d,end: %d\n",*soluce,*end);
    			//printf("kjo");
    			//*printf("SOLUCE_deb %d\n", *soluce);
    			soluce++;
    			for(i=0;i<8;i++)//L'affichage n'est pas obligatoire,il me permet juste de vérifier qu'il y a 8 reines.
    			{
    				for(j=0;j<8;j++)
    					printf("%02d  ",tab[i][j]);
    				printf("\n");
    			}
    			printf("SOLUCE_fin %d\nend: %d", soluce,end);
    			printf("\n\n");
    			printf("soluce: %d,end: %d\n",soluce,end);
    			fill(tab,n,soluce,end);
    		}
    		if((tab[0][7]==0)&&((end)==1))
    		{
    			(end)++;
    		}
    	}
    }
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/03/2014, 21h54
  2. Modification d'une variable passée en paramètre
    Par kstou2001 dans le forum Shell et commandes GNU
    Réponses: 20
    Dernier message: 21/05/2012, 15h05
  3. Réponses: 4
    Dernier message: 23/09/2010, 22h32
  4. Réponses: 14
    Dernier message: 29/07/2008, 12h33
  5. Nom d'une variable passée en paramètre à une fonction
    Par cata2 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 07/09/2007, 09h17

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