Vous êtes sur la page 1sur 5

Correction Exercice File

#include<stdio.h>

#include<stdlib.h>

typedef struct

{ char nom[20];

float prix;

int mode;

}client;

struct cellule

{ client cl;

struct cellule * suiv;

};

struct file

{struct cellule * tete;

struct cellule * queue;

};

typedef struct file File;

void saisir_client(client *C)

{printf ("Nom = ");

scanf("%s", C-> nom);

printf ("Prix = ");

scanf("%f", &C-> prix);

printf ("Mode = ");

scanf("%d", &C-> mode);

int File_vide(File F)

{if(F.tete == NULL && F.queue == NULL)

return 0;

else
return 1;}

File enfiler (File F, client C) // ajouter un nouveau client

{struct cellule * nouv;

nouv = (struct cellule *) malloc(sizeof(struct cellule));

nouv -> cl = C;

nouv -> suiv = NULL;

if(File_vide(F)==0)

{ F.tete = nouv;

F.queue = nouv;

else

{ F.queue -> suiv = nouv;

F.queue = nouv ;

return F;

File defiler (File F, client * C) // servir un client

{ struct cellule * asup;

if(File_vide(F)==0)

printf("FIle vide !!");

else

{asup = F.tete;

*C = asup -> cl;

if(F.tete -> suiv == NULL)

{ F.tete = NULL;

F.queue = NULL;

else

F.tete = F.tete -> suiv;

free(asup);

}
return F;}

void calcul_recette (File F, float * s1, float * s2, float * s3)

{ client C;

float total = 0.0;

*s1 = 0; *s2 = 0; *s3 = 0;

if(File_vide(F)==0)

printf("FIle vide !!");

else

{ while (File_vide(F)!=0)

{ F=defiler(F,&C);

switch(C.mode)

{ case 1: *s1 = *s1 + C.prix; break;

case 2: *s2 = *s2 + C.prix; break;

case 3: *s3 = *s3 + C.prix; break;

int main()

{File F;

F.tete = NULL;

F. queue = NULL;

client c;

int i;

float recette_totale, som1, som2, som3;

for( i = 0; i< 5 ; i++)

{ saisir_client(&c);

F= enfiler(F,c);

}
calcul_recette(F, &som1, &som2, &som3);

recette_totale = som1 + som2 + som3 ;

printf ( "La recette pour le mode de paiement 1 = %.2f \n", som1);

printf ( "La recette pour le mode de paiement 2 = %.2f \n", som2);

printf ( "La recette pour le mode de paiement 3 = %.2f \n", som3);

printf("La recette de la journee = %.2f", recette_totale);

return 0;

Correction exercice Pile


#include <stdio.h>

#include <stdlib.h>

#include <math.h>

typedef struct

{ char car;

struct cellule * suiv;

} cellule;

typedef cellule * pile;

void empiler (pile * p, char c)

{ pile nouv =malloc(sizeof(cellule));

nouv->car=c;

nouv->suiv=(*p);

(*p)=nouv;

void depiler (pile * p)

{ pile tmp;

if((*p)!=NULL)

{ tmp=(*p);

(*p)=(*p)->suiv;

free(tmp);

else printf("Pile vide !");


}

int main()

{ pile p=NULL;

char ch[20];

int n=0, i=0,paren;

paren=1;

printf("donner la chaine \n");

fflush(stdin);

gets(ch);

while(ch[i]!='\0'&&paren==1)

{ if(ch[i]=='(')

empiler(&p,'(');

if (ch[i]==')')

{ if(p==NULL)

paren=0;

else

depiler(&p);

i++;

if(p!=NULL)

paren=0;

if(paren==1)

printf("parenthese");

else

printf("NON parenthese");

return 0;

Vous aimerez peut-être aussi