begin process at 2008 07 20 09:22:01
1 213 150 membres
71 nouveaux aujourd'hui
14 166 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : BESOIN D'AIDE [ Divers / Débutant(e) ] (gersen)

BESOIN D'AIDE le 02/05/2008 15:43:53

gersen
bonjour a vous
voila j'ai besoin d'aide j'ai un pt'it probleme avec mon programme
mon programme consiste a chercher d'abord un chemins entre 2 stations a et b ensuite chercher tous les chemins entre ces deux meme stations.
on a notre reseau d'arc qui est dans un fichiers d'arc qui contient notre reseau d'arc
voici le code


#include<stdio.h>

#include<stdlib.h>
#include<conio.h>
#include<string.h>
/*fonction creer station*/

typedefstructstationstation;
structstation{charnom[20];
intnum;
};

/*le type arc*/
typedefstructarcarc;
structarc
{stationstat_depart;
stationstat_arriv;
intindic;
};


/*fonction de creation de station*/
stationcreer_station(char*nom,intnum)
{stationnouv;
{
nouv.num=num;
strcpy(nouv.nom,nom);
}
}
/*fonctions de comparaison entre 2 stations*/
intmeme_station(stationa,stationb)
{
if(strcmp(a.nom,b.nom)==0&&a.num==b.num)return(1);
elsereturn(0);
}


/*fonctions de creation d'un arc*/

arccreer_ar(stationa,stationb,intindicateur)
{arcnouv;
{nouv.stat_depart=a;
nouv.stat_arriv=b;
nouv.indic=indicateur;
}
return(nouv);
}

/* appartenance*/
intappartient(stationa,arcc)
{
if((strcmp(c.stat_depart.nom,a.nom)==0)&&(c.stat_depart.num==a.num))return(1);
elseif((strcmp(c.stat_arriv.nom,a.nom)==0)&&(c.stat_arriv.num==a.num))return(1);
elsereturn(0);
}

/*comparaisons de 2 arc*/
intmemearc(arcc1,arcc2)
{
if((appartient(c1.stat_depart,c2)==1)&&(appartient(c1.stat_arriv,c2)==1))return(1);
elsereturn(0);

}

/*fonctions se suivent*/
intsesuivent(arcc1,arcc2)
{
if((memearc(c1,c2)==0)&&(strcmp(c1.stat_arriv.nom,c2.stat_depart.nom)!=0))return(1);

elsereturn(0);
}


/* PARTIE 3*/


FILE*creerReseau(intnbr)
{inti=1;arca;FILE*fich;
fich=fopen("tp2.dat","w");
if(fich==NULL){printf("erreur d'ouverture");exit(-1);}
while(i<=nbr)
{
printf("donner le nom de votre station de depart de l'arc Numero %d\n",i);
scanf("%s",&a.stat_depart.nom);
printf("donner le nom de votre station d'arrive de l'arc Numero %d\n",i);
scanf("%s",&a.stat_arriv.nom);
fwrite(&a,sizeof(arc),1,fich);
i++;
}
fclose(fich);
return(fich);
}



/*rechercher un arc*/

intrechercheArc(stationdepart,stationarrive,FILE*p)
{arca;
p=fopen("tp2.dat","r");
if(p==NULL){printf("erreur d'ouverture");exit(-1);}
while(!feof(p))
{fread(&a,sizeof(arc),1,p);
if((appartient(depart,a)==1)&&(appartient(arrive,a)==1))return(1);
}
return(0);
}
/*copier 2 arc*/
arccopier(arca)
{arcb;
strcpy(b.stat_depart.nom,a.stat_depart.nom);
b.stat_depart.num=a.stat_depart.num;
b.stat_arriv.num=a.stat_arriv.num;
strcpy(b.stat_arriv.nom,b.stat_arriv.nom);

}
/*suppression d'un ARC*/



/* rechercher l'existance d'un chemin*/

arc*recherche(stationa,stationb,FILE*p)
{arcc,save,tab[50];inttrouv=0,fin,i=0;
p=fopen("tp2.dat","r");
while((trouv==0)&&(!feof(p)))
{fread(&c,sizeof(arc),1,p);
if((appartient(a,c)==1)&&(strcmp(a.nom,c.stat_depart.nom)==0)){trouv=1;
save=c;
trouv=1;


rewind(p);
}

}
if(trouv==0){return(0);}



while((!feof(p))&&(appartient(b,c)==0))
{fread(&c,sizeof(arc),1,p);
if((memearc(c,save)==0)&&(sesuivent(save,c)==1)){save=c;
rewind(p);
tab[i]=save;
i++;
}
}
fclose(p);
return(tab);
}



main()
{intnbr,i;FILE*fichier;arc*s,d;stationdepart,arrive;

printf("DONNEZ LE NOMBRE D'ARC DU RESEAU \n");
scanf("%d",&nbr);
fichier=creerReseau(nbr);
printf("QUELLE SONT LES STATIONS QUE VOUS VOULEZ CHERCHER LE CHEMINS ENTRE ELLES\n");
printf("STATION DE DEPART:");
scanf("%s",&depart.nom);
printf("STATION D'ARRIVE:");
scanf("%s",&arrive.nom);
fclose(fichier);
s=recherche(depart,arrive,fichier);
i=0;
while(i<nbr)
{printf("%s %s \n",s[i].stat_depart.nom,s[i].stat_arriv.nom);
i++;
}
getch();
}



Classé sous : num, stat, depart, arc, arriv

Participer à cet échange

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS