Bonjour.

Mon problème, c'est l'affectation d'un membre d'une matrice à un pointeur.

Ainsi: soit la matrice suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
typedef struct{
    int vs; //ville suivante
    int vd; // distance de la ville
}t_chem;
 
t_chem Chemin[nb_ville][nb_chemin];
et un pointeur
Ainsi, ma tâche, c'est d'obtenir la valeur de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Chemin[nb_ville][nb_chemin].vs
par l'intermédiaire du pointeur
Mais mon problème, c'est qu'au lieu d'obtenir leur valeur
j'obtiens les adresses des

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Chemin[nb_ville][nb_chemin].vs
Voici le bout du code concerné.

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
107
#include <stdio.h>
#include <stdlib.h>
#define NB 3
#define NC 2
 
 
 
typedef struct{
    int vs; //ville suivante
    int vd; // distance de la ville
}t_chem;
 
typedef struct{
    int nvil; //numéro de la ville
    int nsuiv; //numero de la ville suivante
}t_iti;
 
void f_x(char *ville);
void fx_x(char *ville,  t_chem Chemin[][NC], t_iti Diti[NB]);
 
int main()
{
    int temp;
 
	char ville[NB];//contient les nom des villes
 
	t_chem Chemin[NB][NC];//Pour chaque ville contient les villes 'suivantes'
	//et la distance qui sépare chaque ville suivante de la ville de départ.
 
	t_iti Data_iti[NB]; //Contien la liste des villes parcourues
 
	int i, j;
	//Initialise les nom des ville:
	//un nom est composé d'un seul caractère!!!
	for(i=0; i<NB; i++)
	{
	    printf("\nVille[%d] = ", i);
	    temp=getchar();
	    ville[i]=temp;
	    fflush(stdin);
	}
 
//POur chaque ville, saisir les ville qu'il relie, et la distance
	for(i=0; i<NB; i++){
 
	    for(j=0; j<NC; j++){
	        printf("\nPour %c saisir chemin %d: ", ville[i], j);
	        scanf("%d", &Chemin[i][j].vs);
	        printf("\nPour %c chemin %d saisir la distance: ", ville[i], j);
	        scanf("%d", &Chemin[i][j].vd);
	    }
	}
 
	f_x(ville);//appel fonction
 
	fx_x(ville, Chemin, Data_iti);//appel fonction
 
	return 0;
 
	}
//Affiche les ville avec leur numéros respectifs
void f_x(char *ville)
{
    char *p;
    p=ville;
    int j;
    for(j=0; j<NB; j++)
    {
        printf("Ville[%d] = %c\n", j, *(p+j));
    }
}
//Pour l'instant, affiche pour une ville choisie les villes auquelles elle est reliée
//et la distance qui les sépare...
void fx_x(char *ville, t_chem Chemin[][NC], t_iti Data_iti[NB])
{
 
    int optimal[NB];
    int long_opti = 50000;
    int long_iti;
    int dep, arr;
    char *Cur_ville;//Pointeur sur le tableau, qui contient le nom des villes
    int *Follow_iti; // Pointeur qui contient la liste des villes disponible...
    //...depuis une ville de départ.
 
 int i, j, k, l;
 
  //saisir dep
 
 printf("\nsaisir num ville dep! : ");//ville de départ
 scanf("%d", &dep);
 
 printf("\nsaisir num ville ARR! : ");
 scanf("%d", &arr);
 
Cur_ville=&ville[dep];//Cur_ville pointe sur la ville de départ
 
//Data_iti[0].nvil=dep;
 
//Data_iti[0].nsuiv=0;
 
Follow_iti=&Chemin[*Cur_ville][0].vs;
 
for(i=0; i<NC; i++){
    printf("Follow_iti: dep _ %d = %d\n", i, *(Follow_iti+i));
}
 
}