Rechercher : dans
Par :

Les graphes non orientés plus court chemin

marche1, le 4 mai 2008 à 21:21:56 
 Signaler ce message aux modérateurs

Bonjour,
j'ai un projet qui demande de calculer le plus court chemin.pour réaliser ce projet il faut utiliser les listes chainées,ce projet est dévisé en 4 étapes;mais malheureusement je suis bloquée ds la première étape qui est "ouvrir un fichier texte,ce denier doit contenir les villes et leurs successeurs ".J'ai fait un programme mais ça marche pas,lorsque je le compile il me donne une liste des erreurs.j'ai essaiyé de le réparer mais sans aucune résultat.
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#define GRAPHE "graphe.txt"
typedef struct sommet {
char *sommet;
struct sommet *suivant;
}SOMMET;
typedef SOMMET *liste1;


liste1 A=NULL;
liste1 B;


typedef struct successeur{

char *successeur;
float distance;
float vitesse;
struct successeur *suivant;
}SUCCESSEUR;

typedef SUCCESSEUR *liste2;



typedef struct ville{
char ville;
struct successeur *suivant;
}VILLE;
typedef VILLE *liste;
liste2 T=NULL;
liste p;




FILE * FICHE;

void afficher();
main()
{
int i;
int c;
char ville;
int nbville;
char successeur;
float distance;
float vitesse;
liste2 suiv;
int erreur;
char x;

for(;;)
{
printf("\n taper une chaine de caractères pour terminer");
erreur=scanf("%s",&x);
if(erreur<=0)
break;
}
printf("\n\n lecture de fichier\n\n");

if((FICHE=fopen(GRAPHE,"r"))==NULL)
{fprintf(stderr,"\n Erreur:Impossible de lire le fichier%s\n",GRAPHE);
exit(1);
}
printf("donner le nombre de ville");
scanf("%d",&nbville);
while((c = fgetc(FICHE)) != EOF)

{

for(i=1;i<nbville;i++)
{fscanf(FICHE,"%s\n",ville);
fscanf(FICHE,"%f%f\n",distance,vitesse);
}
}


fclose(FICHE);
return(EXIT_SUCCESS);

B=(liste1)malloc (sizeof(VILLE)),

p =(liste) malloc(sizeof(VILLE));
if(p==NULL){
printf("probleme d'allocation de mémoire\n");
exit(-1);
}

p->ville= x;
p->suivant= T;

T=SUCCESS(successeur,distance,vitesse,suiv);

printf("voici la liste construite");

afficher();
printf("\n\n taper une touche pour quiter");

getch();
}

void afficher()
{
for(p=T;p!=NULL;p=p->suivant)
printf("%d\t",p->ville);
printf("\n");
}
liste2 SUCCESS(char succ,float dist,float vitt,liste2 suiv)

{
liste2 T;
p=(liste)malloc (sizeof(VILLE));
if (p==NULL)
{
printf("problème d'allocation de mémoire\n");
exit(-1);
}
p->successeur=succ;
p->distance=dist;
p->vitesse=vitt;
p->suivant=suiv;
return p;
}





j'éspère que vous me répondez car c'est trés important pour moi.merci d'avance.

Configuration: Windows XP
Internet Explorer 6.0

Collection CommentÇaMarche.net