samar27
Messages postés1Date d'inscriptionjeudi 22 février 2007StatutMembreDernière intervention30 janvier 2008
-
30 janv. 2008 à 14:24
helorem
Messages postés49Date d'inscriptionmercredi 3 novembre 2004StatutMembreDernière intervention 3 février 2008
-
30 janv. 2008 à 15:37
bonjours .
j'ai besoin d'aide en c
j'ai un programme conçu en c et il contient boucoups d'erreurs et il manque des truc que je ne sais pas faire.
si vous voulais bien m'aider, merci d'avance
voici le code:
Fichier : GesResAvion.h
*/
/*definition d'une Liste des vols*/
typedef struct avion {
int Num;
char Typ;
int Max;
char depart[20];
char arrivee[20];
char hdepart[6];
char Harrivee[6];
struct passager *PS;
int NR;
struct passager *PF;
struct vol *prec;//pointeur sur précédent
struct vol *suiv;//pointeur sur suivant
}vol;
/*definition d'un ptr liste de vol*/
typedef vol* vol_t;
/*definition d'une liste de passagers*/
typedef struct pass{
int NPass;
char NomP[20];
int NumP;
struct passager *prec;//pointeur sur précedent
struct passager *suiv;//pointeur sur suivant
}passager;
/*-----------------------
Fonctions utilisees
-----------------------*/
/*--------------------- PArtie I--------------------------*/
/*
Prend en paramètre les données du passager et alloue la place en mémoire en initialisant
Renvoi: adresse de la Cellule passager
*/
struct passager *creer_passager(int NPass,char NomP[20],int NumP, ListVol L, int Num);
/*
Prend en paramètre l'adresse d'une Cellule passager
Renvoi: envoi sur stdout des informations de passager
*/
void affiche_passager(passager *CP);
/*
Insère la Cellule PC en tête de la Liste LP
Renvoi: na
*/
void insere_tete_passager(passager* LP, passager *PC);
/*
Recherche le nom NomPas dans la Liste de passagers
Renvoi: adresse de la cellule ou NULL
*/
passager* rechercher_passager( passager *LP, char* NomPas);
/*
supprime la cellule PC de la liste de passagers LP
Renvoi: na
*/
void supprime_passager( passager *PC, passager *LP);
/*
Vide la liste passagers
Renvoi: libere espace alloué pour la liste des passagers
*/
void vider_passager(passager *LP);
/*--------------------- PArtie II--------------------------*/
/*
enfile une cellule dans la liste passagers
Renvoi: na
*/
void enfiler(passager *LP, passager *CP);
/*defile une cellule de la liste passagers
Renvoi: na
*/
passager* defiler(passager *LP, passager *CP);
void viderBuffer() {
int c;
while ((c = getchar()) != '\n' && c != EOF);
return;
}
/*
Prend en paramètre les données du passager et alloue la place en mémoire en initialisant
Renvoi: adresse de la Cellule passager
*/
passager *creer_passager(){
int NPass;
char NomP[20];
int NumP;
passager *C = (passager *) malloc(sizeof(passager));
if(C==NULL) {//allocation de la memoire impossible
fprintf(stderr,"Plus de mémoire!\n");
return NULL;
} else {
fprintf(stdout,"Veuillez entrer le Numero du passeport : \n");
fscanf(stdin,"\n%d", NPass);
viderBuffer(); //On vide le buffer
C->NPass = NPass;
fprintf(stdout,"Veuillez entrer le nom du passager : \n");
fscanf(stdin,"\n%s", NomP);
viderBuffer(); //On vide le buffer
C->NomP = NomP;
fprintf(stdout,"Veuillez entrer le Numero de place : \n");
fscanf(stdin,"\n%s", NumP);
viderBuffer(); //On vide le buffer
C->NumP = NumP;
return(C);//retourne l'adresse de la cellule nouvellement creee
}
}
void affiche_passager(passager *LP)
{
fprintf(stdout,"\n--------- Liste passager (adresse: %p) -----------\n",LP);
if(LP == NULL) { //pas de pointeurs de liste
fprintf(stderr,"Liste de passagers inexistante!\n");
return;
}
//On copie la tete de la liste
passager *pointeur = LP->succ;
while(pointeur!=NULL) {
fprintf(stdout,"\n------ Informations sur le passager %d ------\n", pointeur->NPass);
fprintf(stdout,"Nom du passager %s --- Numero de place ---\n", pointeur->NumP);
pointeur = pointeur->succ;
}
return;
}
void insere_tete_passager(passager* LP, passager *PC)
{
if(LP==NULL) {
fprintf(stderr,"Insertion en tête échouée... Pas de liste passager définie!/n");
return;
}
PC->suiv = PL->succ;
PC->prec = PL;
PL->suiv = PC;
if(PL->prec == PL)
PL->prec = PC;
fprintf(stdout,"Insertion en tête de liste passager (adresse: %p) réussie...\n",PL);
return;
}
//On copie la tete de la liste
passager *pointeur = LP->suiv;
while( pointeur != PC ) {
//On progresse dans la liste
pointeur = pointeur->suiv;
}
//On est au bon endroit, on met à jour la liste et on libère la mémoire
pointeur->prec->suiv = pointeur->suiv;
pointeur->suiv->prec = pointeur->prec;
free(pointeur);
fprintf(stdout,"--------- suppression Reussie -----------\n");
return;
}
void vider_passager(passager *LP){
fprintf(stdout,"\n--------- Vidange liste des passagers ---------\n");
//On vide
while(LP->suiv!=NULL)
supprime_passager( LP->suiv, LP);
free(LP);
return;
}
/*--------------------- PArtie II--------------------------*/
void enfiler(passager *LP, passager *CP){
if(LP==NULL) {
fprintf(stderr,"enfilement échoué... Pas de cellule définie!/n");
return;
}
insere_tete_passager(passager* LP, passager *PC);
return;
}
passager* defiler(passager *LP)
{
if(LP->prec=NULL) {
fprintf(stderr,"defilement échoué... Pas de cellule a defiler!/n");
return NULL;
}else
supprime_passager( LP->prec, LP);
return (LP->prec);
}
vol *creer_vol() {
int Num;
char Typ;
int Max;
char rep,depart;...................................................erreur
char arrivee;
char hdepart;
char Harrivee;
struct pass *PS;
int NR;
struct pass *PF;
vol *Cvol = (vol *) malloc(sizeof(vol));
if( Cvol == NULL) {//allocation de la memoire impossible
fprintf(stderr,"Plus de mémoire!\n");
return NULL;
} else {
fprintf(stdout,"Veuillez entrer le Numero du vol : \n");
fscanf(stdin,"\n%d", Num);
viderBuffer(); //On vide le buffer
Cvol->Num = Num;
fprintf(stdout,"Veuillez entrer le Type du vol : \n");
fscanf(stdin,"\n%s", Typ);
viderBuffer(); //On vide le buffer
Cvol->Typ = Typ;
fprintf(stdout,"Veuillez entrer le nombre max des places : \n");
fscanf(stdin,"\n%d", Max);
viderBuffer(); //On vide le buffer
Cvol->Max = Max;
fprintf(stdout,"Veuillez entrer la ville de depart : \n");
fscanf(stdin,"\n%s", depart);
viderBuffer(); //On vide le buffer
Cvol->depart = depart;
fprintf(stdout,"Veuillez entrer la ville de arrivee : \n");
fscanf(stdin,"\n%s", arrivee);
viderBuffer(); //On vide le buffer
Cvol->arrivee = arrivee;
fprintf(stdout,"Veuillez entrer laheure de depart : \n");
fscanf(stdin,"\n%s", hdepart);
viderBuffer(); //On vide le buffer
Cvol->hdepart = hdepart;
fprintf(stdout,"Veuillez entrer la heure de arrivee : \n");
fscanf(stdin,"\n%s", Harrivee);
viderBuffer(); //On vide le buffer
Cvol->Harrivee = Harrivee;
NR = 0;
Cvol-> NR = NR;
return(Cvol);//retourne l'adresse de la cellule nouvellement creee
}
}
vol* recherche_vol_num(vol* LV, int NumVol)
{
//On copie la tete de la liste
vol *pointeur = LV->suiv;
while(pointeur!=LV || (pointeur->Num == NumVol)) {
if(pointeur->Num == NumVol)
return pointeur;
pointeur = pointeur->succ;
}
return NULL;
}
void inserer_vol(vol *LV, vol *CV){
if(LV==NULL) {
fprintf(stderr,"\tInsertion en tête échouée... Pas de liste vol définie!/n");
return;
} else {
CV->suiv = LV->suiv;
CV->prec = LV;
LV->suiv = CV;
if(LV->prec == LV) //la sentinelle etait l'unique élément de la ListeVol
LV->prec = CV;
return;
}
}
void vider_vol(vol *LV){
vol *pointeur = LV->suiv;
if(Cvol->NR < Cvol->max )
{
printf(stdout,"le passager est ajouté dans la liste principale: \n");
insere_tete_passager(CV->PS,nouveau);
Cvol->NR--;
}else{
printf(stdout,"le passager est ajouté dans la file d attente: \n");
enfiler(CV->PF,nouveau);
}
}
void annule_reservation(vol *LV,char NomP[20],int numvol){
vol* voltemp, pointeur;
passager *passagertemp;
voltemp = recherche_vol_num(LV,numvol);
if(voltemp==NULL){
printf(stdout,"le numero de vol est innexistant \n");
return;
}else{
passagertemp = rechercher_passager(voltemp->PS,NomP);
if(passagertemp==NULL){
printf(stdout,"le nom de passager est innexistant \n");
return;
}else{
supprime_passager(passagertemp,voltemp->PS);
pointeur = defiler(voltemp->PF);
if(pointeur != NULL){
insere_tete_passager(voltemp->PS,pointeur);
}else{
voltemp->NR++;
}
}
}
}
helorem
Messages postés49Date d'inscriptionmercredi 3 novembre 2004StatutMembreDernière intervention 3 février 2008 30 janv. 2008 à 15:29
Zalut samar27,
Tu peux etre plus precis ? qu'est-ce que tu ne sais pas faire ? ou y a-t-il des erreurs ?
Pour etre honnete, j'ai pas lu ton code, y en a trop !! ca sert a rien de mettre tout ton programme, peu de gens vont le lire, quand on voit la longueur, c'est decourageant.
Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 décembre 20124 30 janv. 2008 à 15:30
Déja là tu es sur phpcs
Ensuite je trouve ça un poils violent de dire : ça marche pas aidez moi (tu es sensé au moins dire ce qui marche pas ...)
Enfin j'te souhaite bonne continuation
--------------------------------------------------------------------------------------------------
Il vaut mieux poser une question et passer pour bête que le rester toute sa vie
Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 décembre 20124 30 janv. 2008 à 15:33
Ah non tu es dans le bar
N'empeche que
--------------------------------------------------------------------------------------------------
Il vaut mieux poser une question et passer pour bête que le rester toute sa vie