Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/04/2008, à 12:14

|3uddha

Probleme du Cavalier Euler - C

Bonjour,
Je suis en train de programmer en C le cavalier d'euler dont les regles sont :
-Avec les mouvements du cavalier ( En L) parcourir toutes les cases d'un echiquier
-ne jamais repasser par la meme case.

J'ai un début de programme recursif, qui utilise le backtracking, le programme tourne bien (càd lorsque il n'y a plus de solutions il revient au coup precedent et joue auter chose),
mais il s'arrete avant d'avoir terminé.. je ne comprends pas pourquoi..
Voici le code:

  
#include <stdio.h>
#include <stdlib.h>
#define N_CA 8  // a inclure dans un fichier.h

struct parcours{
  int *x;
  int valx;
  int *y;
  int valy;
};

typedef struct parcours parcours;
typedef struct parcours c[100000];
typedef int chessmap [N_CA][N_CA];


void affiche(chessmap map){
 int i,j,a=0;
 int repere=N_CA;
 char repere_lettres= 'A';

 for(i=7;i>=0;i--){
   printf("\n%d ", repere);   // Affichage des reperes numeriques
   repere--;

   for(j=0;j<N_CA;j++)       // On affiche ligne par ligne
     printf("  %3d",map[j][i]);
 }
 printf("\n   ");

 while(a<N_CA){         // Affichage des lettres

   printf("   %c ",repere_lettres);
   repere_lettres++;
   a++;
 }
 printf("\n\n");
}

int appartenir(int j, int i){
 if (j<4 && j>=0 && i<4 && i>=0)
   return 1;
 else
   return 0;
}

int nbr_cases(chessmap dir){
 int i,j,cpt;
 cpt=0;

 for(i=0;i<8;i++){
   for(j=0;j<8;j++){

     if(dir[i][j]!=0)
   cpt++;
   }
 }
 return cpt;
}

int max(chessmap dir){
 int *min,i,tmp,taille;
 min=dir[0];
 i=0;
 tmp=0;
 taille=N_CA * N_CA;

 while(i++<taille){

   if(tmp<*min)
     tmp=*min;

   min++;
 }
 return tmp;
}

void init(chessmap tab){
  int i,j;
  for(i=0;i<8;i++){
    for(j=0;j<8;j++){
      tab[i][j]=0;
    }
  }
}


//fonction principale recursive

int boucle(int x, int y,chessmap chemin,int coup,c combi, int cpt){

 int  dir[8][8]={0};
 int i,j,r,c;

 c=1;
 r=2;


                      /*les 8 directions de l'espace ou le cheval peut jouer */
 if(appartenir(x+r,y+c) && chemin[x+r][y+c]==0 && verif_combi2(x,y,x+r,y+c,chemin,combi)==0)
   dir[x+r][y+c]=1;

 if(appartenir(x+r,y-c) && chemin[x+r][y-c]==0 && verif_combi2(x,y,x+r,y-c,chemin,combi)==0)
   dir[x+r][y-c]=1;

 if(appartenir(x-c,y+r) && chemin[x-c][y+r]==0 && verif_combi2(x,y,x-c,y+r,chemin,combi)==0)
   dir[x-c][y+r]=1;

 if(appartenir(x-c,y-r) && chemin[x-c][y-r]==0 && verif_combi2(x,y,x-c,y-r,chemin,combi)==0)
   dir[x-c][y-r]=1;

 if(appartenir(x-r,y+c) && chemin[x-r][y+c]==0 && verif_combi2(x,y,x-r,y+c,chemin,combi)==0)
   dir[x-r][y+c]=1;

 if(appartenir(x-r,y-c) && chemin[x-c][y-r]==0 && verif_combi2(x,y,x-c,y-r,chemin,combi)==0)
   dir[x-r][y-c]=1;

 if(appartenir(x+c,y+r) && chemin[x+c][y+r]==0 && verif_combi2(x,y,x+c,y+r,chemin,combi)==0)
   dir[x+c][y+r]=1;

 if(appartenir(x+c,y-r) && chemin[x+c][y-r]==0 && verif_combi2(x,y,x+c,y-r,chemin,combi)==0)
   dir[x+c][y-r]=1;

if(coup<=1)
chemin[x][y]=1;

 //no_solution
// if(!nbr_cases(dir))
  // no_solution(chemin,coup,combi,cpt);



 //sinon on joue sur la premiere case possible
 for(i=0;i<8;i++){
   for(j=0;j<8;j++){

     if(i==7 && j==7)
         return  no_solution(chemin,coup,combi,cpt);
      if(dir[i][j]==1  && chemin[i][j]==0 && !(verif_combi2(x,y,i,j,chemin,combi))){

       printf("Tour numero : %d\n %d,%d",coup,i,j);
       chemin[i][j]=coup++;
    if(!nbr_cases(chemin)&& coup>3){
    printf("Gaaaaaaaaaagner\n");
    return 0;}
    affiche(chemin);
       pause();
       return boucle(i,j,chemin,coup,combi,cpt);
     }
   }
 }
}

int no_solution(chessmap chemin, int coup, c combi, int cpt){
 int i,j,maxi;

 printf("backtraaaaackkk\n"); //si aucune solution
 maxi=max(chemin);
 coup--;
 for(i=0;i<8;i++){
   for(j=0;j<8;j++){
     if(chemin[i][j]== maxi )

   combi[cpt].y=&chemin[i][j]; //on recueille l'adresse du dernier mvmt
   combi[cpt].valy=chemin[i][j];
   chemin[i][j]=0;// on supprime le dernier mvmt

   }
   }

 maxi=max(chemin); // on reprend a partir de l'avant dernier
 for(i=0;i<8;i++){
   for(j=0;j<8;j++){
     if(chemin[i][j]==maxi && maxi>1){
       combi[cpt].x=&chemin[i][j];// on recueille l'adresse de l'avant dernier mvmt
       combi[cpt].valx=chemin[i][j];
       printf("mouvements incompatibles %p -> %p = %d -> %d\n",combi[cpt].x,combi[cpt].y,combi[cpt].valx,combi[cpt].valy);
       cpt++;                     // les adresses deviennent incompatibles
       return boucle(i,j,chemin,coup,combi,cpt);
     }
   }
 }
}

// on parcourt l'ensemble des combinaisons, et on les compare ac ce qui va etre joue

int verif_combi2(int x, int y,int u, int v, chessmap chemin,c combi){
 int i,*depart,*arrivee,valx,valy;

 depart=&(chemin[x][y]);// depart
 arrivee=&(chemin[u][v]);
 valx=chemin[x][y];

 valy=(valx+1) ;

 for(i=0;i<100000;i++){
   if(depart==combi[i].x && arrivee==combi[i].y){
     if(valy==combi[i].valy && valx==combi[i].valx){
         printf("depart:%p -> %p ; %d -> %d\n",depart,arrivee,valx,valy);

       // printf("Match,combi.valx=%d et combi.valy=%d !!\n",combi[i].valx,combi[i].valy);
     return 1;
       }
   }
 }
 return 0;
}

void init_combi(c combi){
 int i;
      for(i=0;i<100;i++){
    combi[i].x=NULL;
        combi[i].y=NULL;
        combi[i].valx=0;
        combi[i].valy=0; }
}

int pause(){
  int continuer;
 continuer=0;
 printf("Continuer ?, Entrez 1\n");
 scanf("%d",&continuer);
 if(continuer==1)
   return 1;
}

int main(){
 int cpt=0;
 chessmap pos={0};
 chessmap erreur={0};
 chessmap chemin={0};
 //chemin[3][2]=34;
 //chemin[1][2]=23;

 c combi;
 int coup=1;
 int x,y;
 x=0;
 y=0;
 //  combi[1].x=&chemin[1][3];
 //combi[1].y=&chemin[2][4];

 //  no_solution(erreur,pos,chemin,coup,combi,cpt);

 //  verif_combi2(1,3,2,4,chemin,combi);

 //init_combi(combi);

 boucle(x,y,chemin,coup,combi,cpt);
affiche(chemin);
return 0;
}

Je le concéde le code est trés moche, mais ce n'est pas une priorité pour l'instant,j'attends qu'il tourne correctement pour l'ameliorer.
Merci a tous ceux qui jetteront un oeil sur le code.
Amicalement .;)

Nb:Je soupçonne la structure "parcours" de ne pas avoir assez de place.. je ne suis pas sur

Dernière modification par |3uddha (Le 26/04/2008, à 12:40)

Hors ligne

#2 Le 26/04/2008, à 12:26

nicolas.sitbon

Re : Probleme du Cavalier Euler - C

En plus d'être moche, ça ne compile pas :

main.c:7: erreur: expected specifier-qualifier-list before «:" token
main.c:17: attention : no previous prototype for «affiche"
main.c:40: attention : no previous prototype for «appartenir"
main.c:47: attention : no previous prototype for «nbr_cases"
main.c:61: attention : no previous prototype for «max"
main.c:78: attention : no previous prototype for «init"
main.c:90: attention : no previous prototype for «boucle"
main.c: In function «boucle":
main.c:92: attention : accolades manquantes autour de l'initialisation
main.c:92: attention : (near initialization for «dir[0]")
main.c:93: attention : declaration of «c" shadows a global declaration
main.c:13: attention : déclaration est masquée ici
main.c:100: erreur: implicit declaration of function «verif_combi2"
main.c:100: attention : nested extern declaration of «verif_combi2"
main.c:138: erreur: implicit declaration of function «no_solution"
main.c:138: attention : nested extern declaration of «no_solution"
main.c:147: erreur: implicit declaration of function «pause"
main.c:147: attention : nested extern declaration of «pause"
main.c: Hors de toute fonction :
main.c:154: attention : no previous prototype for «no_solution"
main.c: In function «no_solution":
main.c:165: erreur: «struct parcours" has no member named «y"
main.c:165: erreur: expected «)" before «;" token
main.c:169: erreur: too few arguments to function «boucle"
main.c:169: erreur: expected «;" before «}" token
main.c:178: erreur: «struct parcours" has no member named «y"
main.c:178: erreur: «struct parcours" has no member named «valy"
main.c: Hors de toute fonction :
main.c:188: attention : no previous prototype for «verif_combi2"
main.c: In function «verif_combi2":
main.c:198: erreur: «struct parcours" has no member named «y"
main.c:199: erreur: «struct parcours" has no member named «valy"
main.c: Hors de toute fonction :
main.c:210: attention : no previous prototype for «init_combi"
main.c: In function «init_combi":
main.c:214: erreur: «struct parcours" has no member named «y"
main.c:216: erreur: «struct parcours" has no member named «valy"
main.c: Hors de toute fonction :
main.c:219: attention : function declaration isn"t a prototype
main.c:228: attention : function declaration isn"t a prototype
main.c: In function «main":
main.c:230: attention : accolades manquantes autour de l'initialisation
main.c:230: attention : (near initialization for «pos[0]")
main.c:231: attention : accolades manquantes autour de l'initialisation
main.c:231: attention : (near initialization for «erreur[0]")
main.c:232: attention : accolades manquantes autour de l'initialisation
main.c:232: attention : (near initialization for «chemin[0]")
main.c:231: attention : unused variable «erreur"
main.c:230: attention : unused variable «pos"

Hors ligne

#3 Le 26/04/2008, à 12:31

|3uddha

Re : Probleme du Cavalier Euler - C

Effectivement, désolé, je viens de rectifier

Hors ligne

#4 Le 26/04/2008, à 12:33

nicolas.sitbon

Re : Probleme du Cavalier Euler - C

|3uddha a écrit :

Effectivement, désolé, je viens de rectifier

Ah bon? et on fait comment on devine ce que tu as rectifié?

Hors ligne

#5 Le 26/04/2008, à 12:35

|3uddha

Re : Probleme du Cavalier Euler - C

Heu, non, j'ai rectifié le code dans mon premier message dans la balise code.

Hors ligne

#6 Le 26/04/2008, à 12:37

nicolas.sitbon

Re : Probleme du Cavalier Euler - C

|3uddha a écrit :

Heu, non, j'ai rectifié le code dans mon premier message dans la balise code.

c'est une blague?

main.c:7: erreur: expected specifier-qualifier-list before «:" token
main.c:17: attention : no previous prototype for «affiche"
main.c:40: attention : no previous prototype for «appartenir"
main.c:47: attention : no previous prototype for «nbr_cases"
main.c:61: attention : no previous prototype for «max"
main.c:78: attention : no previous prototype for «init"
main.c:90: attention : no previous prototype for «boucle"
main.c: In function «boucle":
main.c:92: attention : accolades manquantes autour de l'initialisation
main.c:92: attention : (near initialization for «dir[0]")
main.c:93: attention : declaration of «c" shadows a global declaration
main.c:13: attention : déclaration est masquée ici
main.c:100: erreur: implicit declaration of function «verif_combi2"
main.c:100: attention : nested extern declaration of «verif_combi2"
main.c:138: erreur: implicit declaration of function «no_solution"
main.c:138: attention : nested extern declaration of «no_solution"
main.c:147: erreur: implicit declaration of function «pause"
main.c:147: attention : nested extern declaration of «pause"
main.c: Hors de toute fonction :
main.c:154: attention : no previous prototype for «no_solution"
main.c: In function «no_solution":
main.c:164: erreur: «struct parcours" has no member named «y"
main.c:165: erreur: «struct parcours" has no member named «valy"
main.c:177: erreur: «struct parcours" has no member named «y"
main.c:177: erreur: «struct parcours" has no member named «valy"
main.c: Hors de toute fonction :
main.c:187: attention : no previous prototype for «verif_combi2"
main.c: In function «verif_combi2":
main.c:197: erreur: «struct parcours" has no member named «y"
main.c:198: erreur: «struct parcours" has no member named «valy"
main.c: Hors de toute fonction :
main.c:209: attention : no previous prototype for «init_combi"
main.c: In function «init_combi":
main.c:213: erreur: «struct parcours" has no member named «y"
main.c:215: erreur: «struct parcours" has no member named «valy"
main.c: Hors de toute fonction :
main.c:218: attention : function declaration isn"t a prototype
main.c:227: attention : function declaration isn"t a prototype
main.c: In function «main":
main.c:229: attention : accolades manquantes autour de l'initialisation
main.c:229: attention : (near initialization for «pos[0]")
main.c:230: attention : accolades manquantes autour de l'initialisation
main.c:230: attention : (near initialization for «erreur[0]")
main.c:231: attention : accolades manquantes autour de l'initialisation
main.c:231: attention : (near initialization for «chemin[0]")
main.c:230: attention : unused variable «erreur"
main.c:229: attention : unused variable «pos"

Hors ligne

#7 Le 26/04/2008, à 12:42

|3uddha

Re : Probleme du Cavalier Euler - C

Je te prie de m'excuser, j'ai refait l'opération en copiant collant tout le code, j'ai voulu enlever quelques fonctions superflues, pas autant que ca finalement.
Merci de ta persevérance big_smile

Hors ligne

#8 Le 26/04/2008, à 13:03

nicolas.sitbon

Re : Probleme du Cavalier Euler - C

|3uddha a écrit :

Je te prie de m'excuser, j'ai refait l'opération en copiant collant tout le code, j'ai voulu enlever quelques fonctions superflues, pas autant que ca finalement.
Merci de ta persevérance big_smile

c'est un peu mieux :

main.c:17: attention : no previous prototype for «affiche"
main.c:40: attention : no previous prototype for «appartenir"
main.c:47: attention : no previous prototype for «nbr_cases"
main.c:61: attention : no previous prototype for «max"
main.c:78: attention : no previous prototype for «init"
main.c:90: attention : no previous prototype for «boucle"
main.c: In function «boucle":
main.c:92: attention : accolades manquantes autour de l'initialisation
main.c:92: attention : (near initialization for «dir[0]")
main.c:93: attention : declaration of «c" shadows a global declaration
main.c:13: attention : déclaration est masquée ici
main.c:100: erreur: implicit declaration of function «verif_combi2"
main.c:100: attention : nested extern declaration of «verif_combi2"
main.c:138: erreur: implicit declaration of function «no_solution"
main.c:138: attention : nested extern declaration of «no_solution"
main.c:147: erreur: implicit declaration of function «pause"
main.c:147: attention : nested extern declaration of «pause"
main.c: Hors de toute fonction :
main.c:154: attention : no previous prototype for «no_solution"
main.c:187: attention : no previous prototype for «verif_combi2"
main.c:209: attention : no previous prototype for «init_combi"
main.c:218: attention : function declaration isn"t a prototype
main.c:227: attention : function declaration isn"t a prototype
main.c: In function «main":
main.c:229: attention : accolades manquantes autour de l'initialisation
main.c:229: attention : (near initialization for «pos[0]")
main.c:230: attention : accolades manquantes autour de l'initialisation
main.c:230: attention : (near initialization for «erreur[0]")
main.c:231: attention : accolades manquantes autour de l'initialisation
main.c:231: attention : (near initialization for «chemin[0]")
main.c:230: attention : unused variable «erreur"
main.c:229: attention : unused variable «pos"

Hors ligne

#9 Le 26/04/2008, à 13:14

|3uddha

Re : Probleme du Cavalier Euler - C

Ok...Then.. Avant qu'on ne commence a me traiter de tous les noms, j'aurais a dier pour ma defense que..Aucune Excuse, Lamentable, Méprisable.
Donc voici la derniere "version", je pense qu'elle fonctionne.
Nb:comme j'utilise scanf si ont veut rapidement arriver a la fin de l'execution, entrez un caractére non-numerique (sinon.. un truc comme 1000 affichages).

#include <stdio.h>
#include <stdlib.h>
#define N_CA 8  // a inclure dans un fichier.h

struct parcours{
  int *x;
  int valx;
  int *y;
  int valy;
};

typedef struct parcours parcours;
typedef struct parcours c[100000];
typedef int chessmap [N_CA][N_CA];


void affiche(chessmap map){
 int i,j,a=0;
 int repere=N_CA;
 char repere_lettres= 'A';

 for(i=7;i>=0;i--){
   printf("\n%d ", repere);   // Affichage des reperes numeriques
   repere--;

   for(j=0;j<N_CA;j++)       // On affiche ligne par ligne
     printf("  %3d",map[j][i]);
 }
 printf("\n   ");

 while(a<N_CA){         // Affichage des lettres

   printf("   %c ",repere_lettres);
   repere_lettres++;
   a++;
 }
 printf("\n\n");
}

int appartenir(int j, int i){
 if (j<8 && j>=0 && i<8 && i>=0)
   return 1;
 else
   return 0;
}

int nbr_cases(chessmap dir){
 int i,j,cpt;
 cpt=0;

 for(i=0;i<8;i++){
   for(j=0;j<8;j++){

     if(dir[i][j]!=0)
   cpt++;
   }
 }
 return cpt;
}

int max(chessmap dir){
 int *min,i,tmp,taille;
 min=dir[0];
 i=0;
 tmp=0;
 taille=N_CA * N_CA;

 while(i++<taille){

   if(tmp<*min)
     tmp=*min;

   min++;
 }
 return tmp;
}

void init(chessmap tab){
  int i,j;
  for(i=0;i<8;i++){
    for(j=0;j<8;j++){
      tab[i][j]=0;
    }
  }
}


//fonction principale recursive

int boucle(int x, int y,chessmap chemin,int coup,c combi, int cpt){

 int  dir[8][8]={0};
 int i,j,r,c;

 c=1;
 r=2;


                      /*les 8 directions de l'espace ou le cheval peut jouer */
 if(appartenir(x+r,y+c) && chemin[x+r][y+c]==0 && verif_combi2(x,y,x+r,y+c,chemin,combi)==0)
   dir[x+r][y+c]=1;

 if(appartenir(x+r,y-c) && chemin[x+r][y-c]==0 && verif_combi2(x,y,x+r,y-c,chemin,combi)==0)
   dir[x+r][y-c]=1;

 if(appartenir(x-c,y+r) && chemin[x-c][y+r]==0 && verif_combi2(x,y,x-c,y+r,chemin,combi)==0)
   dir[x-c][y+r]=1;

 if(appartenir(x-c,y-r) && chemin[x-c][y-r]==0 && verif_combi2(x,y,x-c,y-r,chemin,combi)==0)
   dir[x-c][y-r]=1;

 if(appartenir(x-r,y+c) && chemin[x-r][y+c]==0 && verif_combi2(x,y,x-r,y+c,chemin,combi)==0)
   dir[x-r][y+c]=1;

 if(appartenir(x-r,y-c) && chemin[x-c][y-r]==0 && verif_combi2(x,y,x-c,y-r,chemin,combi)==0)
   dir[x-r][y-c]=1;

 if(appartenir(x+c,y+r) && chemin[x+c][y+r]==0 && verif_combi2(x,y,x+c,y+r,chemin,combi)==0)
   dir[x+c][y+r]=1;

 if(appartenir(x+c,y-r) && chemin[x+c][y-r]==0 && verif_combi2(x,y,x+c,y-r,chemin,combi)==0)
   dir[x+c][y-r]=1;

if(coup<=1)
chemin[x][y]=1;

 //no_solution
// if(!nbr_cases(dir))
  // no_solution(chemin,coup,combi,cpt);



 //sinon on joue sur la premiere case possible
 for(i=0;i<8;i++){
   for(j=0;j<8;j++){

     if(i==7 && j==7)
         return  no_solution(chemin,coup,combi,cpt);
      if(dir[i][j]==1  && chemin[i][j]==0 && !(verif_combi2(x,y,i,j,chemin,combi))){

       printf("Tour numero : %d\n %d,%d",coup,i,j);
       chemin[i][j]=coup++;
    if(!nbr_cases(chemin)&& coup>3){
    printf("Gaaaaaaaaaagner\n");
    return 0;}
    affiche(chemin);
       pause();
       return boucle(i,j,chemin,coup,combi,cpt);
     }
   }
 }
}

int no_solution(chessmap chemin, int coup, c combi, int cpt){
 int i,j,maxi;

 printf("backtraaaaackkk\n"); //si aucune solution
 maxi=max(chemin);
 coup--;
 for(i=0;i<8;i++){
   for(j=0;j<8;j++){
     if(chemin[i][j]== maxi ){

   combi[cpt].y=&chemin[i][j]; //on recueille l'adresse du dernier mvmt
   combi[cpt].valy=chemin[i][j];
   chemin[i][j]=0;// on supprime le dernier mvmt

   }
   }
 }
 maxi=max(chemin); // on reprend a partir de l'avant dernier
 for(i=0;i<8;i++){
   for(j=0;j<8;j++){
     if(chemin[i][j]==maxi){
       combi[cpt].x=&chemin[i][j];// on recueille l'adresse de l'avant dernier mvmt
       combi[cpt].valx=chemin[i][j];
       printf("mouvements incompatibles %p -> %p = %d -> %d\n",combi[cpt].x,combi[cpt].y,combi[cpt].valx,combi[cpt].valy);
       cpt++;                     // les adresses deviennent incompatibles
       return boucle(i,j,chemin,coup,combi,cpt);
     }
   }
 }
}

// on parcourt l'ensemble des combinaisons, et on les compare ac ce qui va etre joue

int verif_combi2(int x, int y,int u, int v, chessmap chemin,c combi){
 int i,*depart,*arrivee,valx,valy;

 depart=&(chemin[x][y]);// depart
 arrivee=&(chemin[u][v]);
 valx=chemin[x][y];

 valy=(valx+1) ;

 for(i=0;i<100000;i++){
   if(depart==combi[i].x && arrivee==combi[i].y){
     if(valy==combi[i].valy && valx==combi[i].valx){
         printf("depart:%p -> %p ; %d -> %d\n",depart,arrivee,valx,valy);

       // printf("Match,combi.valx=%d et combi.valy=%d !!\n",combi[i].valx,combi[i].valy);
     return 1;
       }
   }
 }
 return 0;
}

void init_combi(c combi){
 int i;
      for(i=0;i<100;i++){
    combi[i].x=NULL;
        combi[i].y=NULL;
        combi[i].valx=0;
        combi[i].valy=0; }
}

int pause(){
  int continuer;
 continuer=0;
 printf("Continuer ?, Entrez 1\n");
 scanf("%d",&continuer);
 if(continuer==1)
   return 1;
}

int main(){
 int cpt=0;
 chessmap pos={0};
 chessmap erreur={0};
 chessmap chemin={0};
 //chemin[3][2]=34;
 //chemin[1][2]=23;

 c combi;
 int coup=1;
 int x,y;
 x=0;
 y=0;
 //  combi[1].x=&chemin[1][3];
 //combi[1].y=&chemin[2][4];

 //  no_solution(erreur,pos,chemin,coup,combi,cpt);

 //  verif_combi2(1,3,2,4,chemin,combi);

 //init_combi(combi);

 boucle(x,y,chemin,coup,combi,cpt);
affiche(chemin);
return 0;
}

Dernière modification par |3uddha (Le 26/04/2008, à 13:18)

Hors ligne

#10 Le 28/04/2008, à 21:31

Pygnol

Re : Probleme du Cavalier Euler - C

Salut,

Il reste encore quelques erreurs dont la plupart semblent faciles à corriger:

/home/thierry/devel/forums/ubuntu-fr/main.c|106|attention : accolades manquantes autour de l'initialisation|
/home/thierry/devel/forums/ubuntu-fr/main.c|106|attention : (near initialization for «dir[0]»)|
/home/thierry/devel/forums/ubuntu-fr/main.c|114|attention : déclaration implicite de la fonction « «verif_combi2» »|
/home/thierry/devel/forums/ubuntu-fr/main.c|154|attention : déclaration implicite de la fonction « «no_solution» »|
/home/thierry/devel/forums/ubuntu-fr/main.c|166|attention : déclaration implicite de la fonction « «pause» »|
/home/thierry/devel/forums/ubuntu-fr/main.c|203|attention : format «%p» expects type «void *», but argument 2 has type «int *»|
/home/thierry/devel/forums/ubuntu-fr/main.c|203|attention : format «%p» expects type «void *», but argument 3 has type «int *»|
/home/thierry/devel/forums/ubuntu-fr/main.c|229|attention : format «%p» expects type «void *», but argument 2 has type «int *»|
/home/thierry/devel/forums/ubuntu-fr/main.c|229|attention : format «%p» expects type «void *», but argument 3 has type «int *»|
/home/thierry/devel/forums/ubuntu-fr/main.c|252|attention : function declaration isn»t a prototype|
/home/thierry/devel/forums/ubuntu-fr/main.c|262|attention : function declaration isn»t a prototype|
/home/thierry/devel/forums/ubuntu-fr/main.c|264|attention : accolades manquantes autour de l'initialisation|
/home/thierry/devel/forums/ubuntu-fr/main.c|264|attention : (near initialization for «pos[0]»)|
/home/thierry/devel/forums/ubuntu-fr/main.c|265|attention : accolades manquantes autour de l'initialisation|
/home/thierry/devel/forums/ubuntu-fr/main.c|265|attention : (near initialization for «erreur[0]»)|
/home/thierry/devel/forums/ubuntu-fr/main.c|266|attention : accolades manquantes autour de l'initialisation|
/home/thierry/devel/forums/ubuntu-fr/main.c|266|attention : (near initialization for «chemin[0]»)|
/home/thierry/devel/forums/ubuntu-fr/main.c|265|attention : unused variable «erreur»|
/home/thierry/devel/forums/ubuntu-fr/main.c|264|attention : unused variable «pos»|
/home/thierry/devel/forums/ubuntu-fr/main.c|259|attention : control reaches end of non-void function|
/home/thierry/devel/forums/ubuntu-fr/main.c|209|attention : control reaches end of non-void function|
/home/thierry/devel/forums/ubuntu-fr/main.c|171|attention : control reaches end of non-void function|
||=== Build finished: 22 errors, 0 warnings ===|

Thierry

Hors ligne

#11 Le 30/04/2008, à 13:55

|3uddha

Re : Probleme du Cavalier Euler - C

Ok merci, vu que je n'avais pas beaucoup de réponses et que en plus mon code était boiteux..j'ai tout refait et à présent ca marche.
Je remercie ceux qui ont participé à la discussion.
Cordialement.

nb:(Thierry d'habitude je compile pas avec les options -Wall, apparemment c'est mieux de le faire,mais là tu m' affiché a VIE,noobitor en puissance que je suis) ^^

Hors ligne