Vous êtes sur la page 1sur 16

A.

Problème 1
1. Les Enregistrement

2. fonction lire_n

3. les procédures de saisie

4. les procédures de remplir

5. fonction nbre

6. procédure dispo_oct

7. fonction revenu

8. procédure ncin

9. affichage_n

10. affichage_f

11. traduction en c

B. Problème 2

1
A. Problème 1
1. Les Enregistrements

DATE =enreg CLIENT : enreg FILM : enreg EMPRUNT =enreg

jour : entier NCIN : entier code : entier client : CLIENT

mois : chaine dad : DATE ne : entier film : FILM

annee : entier Finenreg daq : DATE dem : DATE

Finenreg dispo : booléen dre : DATE

Prix : réel

Finenreg

2. Fonction lire_n
Fonction lire_n () : entier

Var x : entier

Début

Répéter

Ecrire ("Donner un entier : ")

Lire(x)

Jusqu’à ((x>0) et (x<=1000))

Retourner(x)

Fin

3. Les Procédures de Saisie


Procédure Lire_date (Res D : DATE) | Procédure Lire_client (Res C : CLIENT)

Var | var

Début | Début

Ecrire ("Donner le jour : ") | Ecrire ("Donner le numéro de CIN : ")

2
Lire(D.jour) | Lire(C.NCIN)

Ecrire ("Donner le mois : ") | Ecrire ("Donner l a date d’adhésion :")

Lire(D.mois) | Lire_date(C.dad)

Ecrire ("Donner l’année : ") | Fin Procédure

Lire(D.annee) |

Fin Procédure |

Procédure Lire_film (Res F : FILM) | Procédure Lire_emprunt (Res E : EMPRUNT)

Var | Var

Début | Début

Ecrire ("Donner la code du film : ") | Ecrire ("Donner un client")

Lire(F.code) | Lire_client (E. client)

Ecrire ("Donner le nombre d’exemplaire : ") | Ecrire ("Donner le film ")

Lire(F.ne) | Lire_film (E. film)

Ecrire ("Donner la date d’acquisition : ") | Ecrire ("Donner la date d’emprunt")

Lire_date(F.daq) | Lire_date(E.dem)

Ecrire ("Donner l’état (disponible ou Non) : ") | Ecrire ("Donner la date de retour")

Lire(F.dispo) | Lire_date(E.dre)

Ecrire ("Donner le prix d’un emprunt : ") | FinProcedure

Lire(F.prix)

FinProcedure

4. Les Procédures de Remplir


Procédure RemplirTC (Res T C:ETC, don N : entier)

Var i : entier

Début

Pour i de 1 à n faire

3
Lire_client (TC[i])

FinPour

Fin Procédure

--------------------------------------------------------------------------------------------------------------------------------------

Procédure RemplirTF (Res T F:ETF, don N : entier)

Var i : entier

Début

Pour i de 1 à N faire

Lire_film (TF[i])

FinPour

Fin Procédure

--------------------------------------------------------------------------------------------------------------------------------------

Procédure RemplirTE (Res T E:ETE, don N : entier)

Var i : entier

Début

Pour i de 1 à N faire

Lire_emprunt (TE[i])

FinPour

Fin Procédure

5. Fonction nbre
Fonction nbre (don N : entier, don TC : ETC) : entier

Var i, j : entier

Début

j 0

Pour i de 1 à N faire

Si (TC[i].dad. Annee=2010)

Alors j j+1

FinSi

4
FinPour

Retourner (j)

Fin fonction

6. Procédure dispo_oct
Procédure dispo_oct (Res TF2 : ETF, don TF : ETF, don n : entier)

Var i, j : entier

Début

j 0

Pour i de 1 à n faire

Si ((TF[i].dispo) et (comparer_chaine (TF[i].daq. mois, "octobre")=0))

Alors TF2 [j] TF[i]

j++

FinSi

FinPour

FinProcedure

7. Fonction revenu
Fonction revenu (don TE : ETE, don n : entier) : réel

Var i : entier

S : réel

Début

S=0

Pour i de 1 n faire

Si(TE[i].dem=2009)

Alors S=S+(TE[i].film. prix)

FinSi

FinPour

Retourner(S)

FinFonction

5
8. Procédure ncin
Procédure ncin (don TE : ETE, don n, Res T : tableau [1..100+ d’entier)

Var i, j : entier

Début

j 0

Pour i de 1 à n faire

Si ((TE[i].client.dad.annee=2006) et (TE[i].dem. annee=2010))

Alors T[j] TE[i].client. NCIN

j j+1

FinSi

Fin Pour

Fin

9. Procédure affichage_f
Procédure affichage_f (don x : ETF, don n : entier)

Var i : entier

Début

Pour i de 1 à n faire

Ecrire ("La code du film : ",x[i].code)

Ecrire ("Le nombre d’exemplaire : ",x[i].ne )

Ecrire ("Date d’acquisition : ", x[i].daq. jour,x[i].daq.mois,x[i].daq. annee)

Ecrire ("La disponibilité : ", x[i].dispo)

Ecrire ("Prix d’un emprunt : ", x[i].prix)

FinPour

FinProcedure

6
10. Procédure affichage_n
Procédure affichage_n (don t : tableau *1..100+ d’entier, don n : entier)

Var i : entier

Début

Pour i de 1 à n faire

Ecrire ("les NCIN des clients qui ont adhéré en 2006 et qui ont emprunté des livres en 2010 ", t[i])

FinPour

FinProcedure

11. Algorithme Principal


ETC : tableau [1..100] de CLIENT

ETF : tableau [1..100] de FILM

ETE : tableau [1..100] de EMPRUNT

Algorithme

Var tc : ETC

tf : ETF

te : ETE

t : tableau [1..100] d’entier

x, y : entier

R : réel

Début

x lire_n ()

RemplirTC (tc, x)

RemplirTF (tf, x)

RemplirTE(te, x)

y nbre (tc, x)

dispo_oct (tf, tf2, x)

7
r revenu(te, x)

ncin(te, x, t)

Ecrire("Le nombre de client qui adhèrent en 2010", y)

affichage_f (tf2, x)

Ecrire("Le total du revenu de vidéoclub pour l’année 2009 ", r)

affichage_n(t, x)

Fin

12. Traduction en C
#include<stdio.h>
#include<string.h>
struct d
{
int jour;
char mois[10];
int annee;
};
typedef struct d DATE;

struct c
{
int NCIN;
DATE dad;
};
typedef struct c CLIENT;

struct f
{
int code;
int ne;
DATE daq;
int dispo;
float prix;

8
};
typedef struct f FILM ;
struct e
{
CLIENT client;
FILM film;
DATE dem;
DATE dre;
};

typedef struct e EMPRUNT;

int lire_n()
{
int x;
do
{
printf("Donner un entier : ");
scanf("%d",&x);
}
while(!((x<=10000)&&(x>0)));
return(x);
}

DATE Lire_Date()
{
DATE x;
printf("Donner le jour : ");
scanf("%d",&x.jour);
printf("Donner le mois : ");
scanf("%s",x.mois);
printf("Donner l'année : ");
scanf("%d",&x.annee);
return(x);
}

9
CLIENT Lire_Client()
{
CLIENT y;
printf("Donner le numéro de CIN :");
scanf("%d",&y.NCIN);
printf("Donner la date d'ahésion \n");
y.dad=Lire_Date();
return(y);
}

FILM Lire_Film()
{
FILM z;
printf("Donner la code du film : ");
scanf("%d",&z.code);
printf("Donner le nombre d'exemplaire : ");
scanf("%d",&z.ne);
printf("Donner la date d'aquisition : \n");
z.daq=Lire_Date();
printf("Donner l'état (disponible/non disponible) : ");
scanf("%d",&z.dispo);
printf("Donner le Prix d'emprunt : ");
scanf("%f",&z.prix);
return(z);
}

EMPRUNT Lire_Emprunt()
{
EMPRUNT w;
printf("Donner les informations de client : \n");
w.client=Lire_Client();
printf("Donner les informations du film : \n");
w.film=Lire_Film();
printf("Donner la date d'emprunt : \n");
w.dem=Lire_Date();
printf("Donner la date de retour : \n");
w.dre=Lire_Date();
return(w);

10
}

void remplir_tc(CLIENT tc[],int n)


{
int i;
for(i=0;i<n;i++)
{
tc[i]=Lire_Client();
}
}

void remplir_tf(FILM tf[],int n)


{
int i;
for(i=0;i<n;i++)
{
tf[i]=Lire_Film();
}
}

void remplir_te(EMPRUNT te[],int n)


{
int i;
for(i=0;i<n;i++)
{
te[i]=Lire_Emprunt();
}
}

int nbre(CLIENT tc[],int n)


{
int i,j;
j=0;
for(i=0;i<n;i++)
{
if(tc[i].dad.annee==2010)
{
j++;

11
}
}
return(j);
}

void dispo_oct(FILM tf[],FILM tf2[],int n)


{
int i,j;
j=0;
for(i=0;i<n;i++)
{
if((tf[i].dispo==1)&&(strcmp(tf[i].daq.mois,"octobre")==0))
{
tf2[j]=tf[i];
j++;
}
}
}
float revenu(EMPRUNT te[],int n)
{
int i;
float s;
s=0;
for(i=0;i<n;i++)
{
if(te[i].dem.annee==2009)
{
s=s+(te[i].film.prix);
}
}
return(s);
}

void ncin(EMPRUNT te[],int n,int t[])


{
int i,j;
j=0;

12
for(i=0;i<n;i++)
{
if((te[i].client.dad.annee==2006)&&(te[i].dem.annee==2010))
{
t[j]=te[i].client.NCIN;
j++;
}
}
}

void affichage_f(FILM x[],int n)


{
int i;
for(i=0;i<n;i++)
{
printf("La code du film : %d\n",x[i].code);
printf("Le nombre d'exemplaire : %d\n",x[i].ne);
printf("Dated'aquisition:%d/%s/%d\n",x[i].daq.jour,x[i].daq.mois,x[i].daq.annee);
printf("La disponibilité : %d\n",x[i].dispo);
printf("Prix d'un emprunt : %f\n",x[i].prix);
printf("***********************************************************\n");
}
}

void affichage_n(int t[],int n)


{
int i;
for(i=0;i<n;i++)
{
printf("Les NCIN des clients qui ont adhéré en 2006 et qui ont emprunté des livres
en 2010 : \n %d",t[i]);
}
}

void main()
{
CLIENT tc[10];
FILM tf[10];

13
FILM tf2[10];
EMPRUNT te[10];
int t[10];
int x,y;
float r;

x=lire_n();
remplir_tc(tc,x);
remplir_tf(tf,x);
remplir_te(te,x);
y=nbre(tc,x);
dispo_oct(tf,tf2,x);
r=revenu(te,x);
ncin(te,x,t);
printf("Le nombre de clients qui adhèreen 2010 : %d\n",x);
affichage_f(tf2,x);
printf("Le total des revenues de vidéo-club pour l'annéé 2009 : %f\n",r);
affichage_n(t,x);
}

B. Problème 2

Procédure tourhanoi (don n : entier, don/Res depart : caractère, don/Res base : caractère, don/Res
intermediaire : caractère)
Var
Début
Si (n>0)
tourhanoi (n-1, depart, intermediaire, base)
Ecrire ()
tourhanoi (n-1, intermediaire, base, depart)
FinSi
FinProcedure

14
Algorithme tours_de_hanoi
Var n, i : entier
Début
Ecrire ("Entrer le nombre de disques : " )
Lire(n)
Tourhanoi (n,’A’,’B’ ,’C’)
Fin

#include<stdio.h>

void tourhanoi(int n,char depart,char base,char intermediaire)


{
if(n>0)
{

tourhanoi(n-1,depart,intermediaire,base);
printf("%c -> %c\n",depart,base);
tourhanoi(n-1,intermediaire,base,depart);
}
}

int main()
{
int n,i;

printf("Entrez le nombre de disques : ");


scanf("%d",&n);
tourhanoi(n,'A','B','C');

15