Salut tout le monde.

Je veux faire un petit prog qui calcule le chemin le plus court.
En fait voila il est assez prehistorique dans ca maniere d'etre,
mais ce n'est qu'un prolog. Voila 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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
 
#include<stdio.h>
#include<stdlib.h>
#define L 20
#define H 20
 
struct labyrinth{
	   int tab[L][H];
	   };
 
typedef struct labyrinth laby;
 
//Pour remplir le tableau
void rempli(){
	 laby lab;
	 int i,j;
 
	 for(i=0;i<L;i++)
	 {
  	  for(j=0;j<H;j++)
		{
	 	 lab.tab[i][j]=1;
	 	}
  	 }
}
 
//Pour imprimer le tableau
void print(){
	 laby lab;
	 int i,j;
 
	 for(i=0;i<L;i++)
	 {
  	  for(j=0;j<H;j++)
		{
	 	 printf("%d ",lab.tab[i][j]);
	 	}
	 	printf("\n");
  	 }	 
}
 
//Ici je dessine le chemin 
void chemin(){
 
	  laby lab;
	  lab.tab[0][0]=9;
	  lab.tab[1][0]=9;
	  lab.tab[2][0]=9;
	  lab.tab[2][1]=9;
	  lab.tab[2][2]=9;
	  lab.tab[2][3]=9;
	  lab.tab[2][4]=9;
	  lab.tab[2][5]=9;
	  lab.tab[3][5]=9;
	  lab.tab[3][6]=9;
	  lab.tab[3][7]=9;
	  lab.tab[3][8]=9;
	  lab.tab[3][9]=9;
	  lab.tab[3][10]=9;
	  lab.tab[3][11]=9;
	  lab.tab[3][12]=9;
	  lab.tab[3][13]=9;
	  lab.tab[3][14]=9;
	  lab.tab[3][15]=9;
	  lab.tab[3][16]=9;
	  lab.tab[3][17]=9;
	  lab.tab[3][18]=9;
	  lab.tab[3][19]=9;
 
}
 
//Avec cette fonction je compte la longeur du chemin
void modifie(int x,int y){
	 laby lab;
	 int i,j,c=0;
 
 
	 if(lab.tab[x][y]==9){lab.tab[x][y]=0;c+=1;}
 
  	 for(i=0;i<L;i++)
	 {
 
	   if(lab.tab[x+1][y]==9){lab.tab[x+1][y]=0;x+=1;c+=1;}
	   if(lab.tab[x-1][y]==9){lab.tab[x-1][y]=0;x-=1;c+=1;}
     }
 
     for(j=0;j<H;j++)
     {
 
	   if(lab.tab[x][y-1]==9){lab.tab[x][y-1]=0;y-=1;c+=1;}
	   if(lab.tab[x][y+1]==9){lab.tab[x][y+1]=0;y+=1;c+=1;}
     }
 
     printf("%d\n\n",c);
}
 
 
int main(int c,char **argv){
    rempli();
    chemin();
    modifie(0,0);
 
    print();
    getch();
 
}
Alor voila quand je l'imprime il ne me reecri que les 8 premieres cases du chemin...Je ne vois pas pourquoi il fait ca...Sinon je tiens a preciser que les x sont sur l'axe des y et vice versa...Je suis desollé de vous compliquer la tache un peu plus. Merci d'avance pour vos reponses