Cherchez l'erreur

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:27
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

1 réponse

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.
0
Rejoignez-nous