bonjour,

j'ai un problème avec mon programme de bataille navale :
Tout d'abord j'ai crée un bateau avec cette fonction :
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
 
typedef struct 
{
   int colonne;
   int ligne;
   int longueur;
   char orientation;
   int nbtouches;
}bateau;
 
typedef struct 
{
   bateau *contenu;
   int etat;
}Case;
 
typedef struct 
{
   Case tableau[9][9];
}grille;
 
bateau SaisirBateau (int l)
{
bateau b;
b.longueur = l;
printf("\nLigne 1ere case : ",b.ligne);
scanf("%d",&b.ligne); 
 
printf("\nColone 1ere case : ",b.colonne);
scanf("%d",&b.colonne);
 
printf("\nOrientation : ",b.orientation);
scanf("%c%c",&b.orientation,&b.orientation);
b.nbtouches=0;
return (b);
}
Ensuite j'utilise cette action qui permet de placer les informations d'un bateau pointé dans les cases correspondantes.
La voici :
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
 
void Ajouterbateau (bateau *pb, grille *g)
{
     int i,j,l,x;
     char o;
     l = (*pb).longueur;
     i = (*pb).ligne;
     j = (*pb).colonne;
     o = (*pb).orientation;
     (*pb).nbtouches=0;
 
     if (o=='b')
     {
        for (x=0;x<l;x++)
        {
          g->tableau[i][j].contenu = pb;
          g->tableau[i][j].etat = 1; 
        }
     }
     else if (o=='d')
     {
        for (x=0;x<l;x++)
        {
           g->tableau[i][j].contenu = pb;
           g->tableau[i][j].etat = 1; 
        }
     }
}
le probleme c'est que lorsque je retourne le pointeur sur un bateau placé à une case (i,j) du tableau avec cette fonction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
bateau* casebateau (grille g,int i, int j)
{  
   return(g.tableau[i][j].contenu);
}
je constate que ce pointeur est le même pour tous les bateaux rentrés !!!! Lorsque je veux modifier les informations d'un bateau à la case (i,j), il me modifie en fait celles du dernier bateau rentré. Comprend pô
En fait je voudrai que les pointeurs soient differents pour chaque bateau.

voila si vous pouvez me donner un ptit coup de main, c'est pas de refu