Vous êtes sur la page 1sur 1

Département d’Informatique

Module I132 : Algorithmique et programmation 2


Parcours MIP (S3)
Examen (2017/2018)
??? Pr. S. ANTER
NB : 1. Si, au cours de l’épreuve, vous repèrez ce qui vous semble être une erreur d’énoncé, vous le signalez sur votre
copie et poursuivez votre composition en expliquant les raisons des initiatives que vous avez amené à prendre.
2. La qualité de la rédaction, la clarté et la précision des raisonnements entreront pour une part importante dans
l’appréciation des copies.

Exercice No 1 :
On se propose d’écrire une application en langage C qui permet de gérer les factures d’un magasin qui n’ont
pas encore été payées. Chaque facture est définie selon le type Facture ci-dessous et dont Date est une autre
structure représentant une date :

typedef struct {
typedef struct {
int num ; // Num é ro de la facture
int jour ;
char nom [30]; // Nom du client
char mois [15];
float prixHT ; // Prix hors taxe à payer ( en dh )
int ann é e ;
Date date_limite ; // Date limite de paiement
} Date ;
} Facture ;

1. Définir la fonction Facture lire() permettant de créer et de retourner une facture dont le numéro, nom,
prix HT et date limite (jour, mois et année) sont lus au clavier
2. En utilisant le formalisme pointeur, définir la fonction void lire tous(Facture* F, int nf ) permettant de
lire les nf factures non payées dont leurs informations sont lues au clavier et de les stocker dans le tableau
F (penser à utiliser la fonction lire de la question Q.1).
3. Définir la fonction void trier(Facture* F, int nf ) permettant de trier les factures par ordre croissant du
nom des clients.
4. En supposant que le tableau des factures est trié par ordre croissant des noms des clients, et en utilisant
une recherche dichotomique, définir la fonction Facture recherche dichotomique(Facture* F, int nf, char*
nom) retournant la facture correspondant au client dont le nom est passé en argument et structure vide
sinon (c-à-d return {0,””,0,{0,””,0}}).
5. Ecrire une fonction d’entête void maj factures(Facture* F, int nf ) qui permet d’augmenter de 10% par
an de retard les prix HT de toutes les factures dont l’année limite de paiement est strictement inférieure
à l’année en cours (2018)
Exemple : Soit la facture ayant l’année limite de paiement 20016 et le prixHT=100dh, le nouveau prix
deviendra 121 dh. (De 2016 à 2017 on augmente le prix de 10% soit 110, de 2017 à 2018, on augmente
110dh de 10% soit 121 dh)
6. En utilisant le formalisme pointeur, écrire une fonction d’entête float total TTC((Facture* F, int nf ) qui
retourne la somme des prix totaux TTC (Toute Taxe Comprise) de toutes les factures dans le tableaux
F. La TVA étant fixée à 20% (Prix TTC = Prix HT + Prix HT * TVA)
7. Définir la fonction void sauvgarder(Facture* f, int nf, char* fichier) permettant de sauvegarder toutes les
factures dans le fichier dont le nom est passée en arguement.
8. Ecrire un programme principale de test
Exercice No 2 :

1. Distance de Hamming entre deux mots : La distance de Hamming entre deux mots (chaı̂ne de
caractères) de même longueur est égale au nombre de lettres, à la même position, qui di↵ère. Par exemple
la distance de Hamming entre ”rose” et ”ruse” est de 1, alors que la distance de Hamming entre ”AFMDH”
et ”ABEDC” est de 3.
) Définir la fonction int hamming(char* mot1, char* mot2) permettant de calculer la distance de Ham-
ming entre les deux mots passés en arguement (mot1 et mot2 sont deux chaı̂nes de caractères de même
longueur)
2. Distance de Hamming d’un langage : Un langage est un tableau de mots (supposés de même lan-
gueur). La distance de Hamming d’un langage est égale au minimum des distances de Hamming entre
deux mots de ce langage di↵érents deux à deux.
) Définir la fonction int distanceHammingLangage(Char langage [NB][L]) qui retourne la distance de
Hamming de son paramètre langage (langage est un tableau de NB mots tous de même langueur L, N B
et L sont deux constantes symboliques strictement positifs déja déclarées).
???

Vous aimerez peut-être aussi