soufiane93
Messages postés
11
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
30 décembre 2008
30 déc. 2008 à 21:36
Bonsoir à tous,
J'ai un projet à faire un informatique, une simulation de traffic automobile.
C'est censé être quelque chose de tres basique, avec uniquement des routes droites, des carrefours, et des virages à 90°.
Je m'occupe essentiellement des structures de données, et nous avons
decidé de modeliser la ville sous la forme d'un tableau à une dimension
contenant chacun un pointeur vers une liste chainée (les rues).
Voici les structures utilisées :
<hr size="2" width="100%" />
#define LARGEUR 10
#define N 10
typedef struct m{
int val;
float px;
struct m *suiv;
}element;
typedef struct l{
element *prem;
}liste;
typedef struct p{
int i;
int j;
}POS;
typedef struct t{
POS P[50]; //Tableau contenant le parcour de la voiture. chaque case
contient les coordonees i et j des cases par lesquelles elle doit
passer.
int ind_pos; //Indice de la position actuelle de voiture dans son parcour.
}PARCOURS;
typedef struct f{
int presence;
int couleur;
}FEU;
typedef struct v{
int presence;
int vitesse;
int accel;
int decel;
int couleur;
}VOITURE;
typedef struct a{
struct a *haut;
struct a *bas;
struct a *gauche;
struct a *droite;
int entree;
int sortie;
FEU feu;//Si la case contient un feu tricolor
int stop;
int accident; //Si il y a 1 accident sur la case
POS pos; //Position de la voiture indice i et j de la cellule dans laquelle elle se trouve.
VOITURE voiture;
}route;
typedef struct r{
route *prem;
}reseau;
typedef struct b{
reseau T[N];
}ville;
<hr size="2" width="100%" />
C'est en utilisant les coordonnées POS.i et POS.j que j'aimerais connecter chacune des "cases" entre elles.
Et c'est là que je bloque literallement.
Voici ma fonction :
<hr size="2" width="100%" />
void AssocierBas(ville V)
{
int ord;
route *curseur, *inferieur;
curseur = V.T[0].prem;
if (V.T[0].prem!=NULL)
{
for (ord=0; ord<N-1; ord++)
{
curseur = V.T[ord].prem;
inferieur = V.T[ord+1].prem;
while ((curseur->pos.j!=inferieur->pos.j) &&
(curseur->droite!=NULL) && (inferieur->droite!=NULL))
{
if (curseur->pos.j == inferieur->pos.j-1)
{
printf("1 curseur=%d inferieur=%d\n",curseur->pos.j,inferieur->pos.j);
curseur->bas=inferieur;
inferieur->haut=curseur;
printf("2 inferieur haut : %p curseur bas : %p\n", &inferieur->haut, &curseur->bas);
inferieur = inferieur->droite;
curseur = curseur->droite;
}
else
{
printf("3 curseur suivant\n");
printf("4 curseur=%d inferieur=%d\n",curseur->pos.j,inferieur->pos.j);
curseur = curseur->droite;
}
}
}
}
else printf("ville vide");
}
<hr size="2" width="100%" />
Ca compile bien, mais j'ai toujours une erreur à l'execution.
Je ne vois vraiment pas où est mon erreur, peut etre aurais-je besoin d'un nouveau regard sur mon code !
Merci à vous.