Vous êtes sur la page 1sur 2

ESIL Dpartement Informatique, Rseaux et Multimdia

Introduction la Programmation
9 septembre 2009

Exercice 1 :
Ecrire une fonction C qui ralise la permutation circulaire des lments dun tableau une
dimension.
Par exemple une permutation circulaire droite de 3 pour un tableau de 10 lments :
T[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
donne :
T[10] = {8, 9, 10, 1, 2, 3, 4, 5, 6, 7}
Le format propos pour cette fonction est :
void permutation_circulaire (int T[], int n, int m)
o :
- T est le tableau permuter ;
- n est la dimension du tableau ;
- m dfinit la permutation raliser droite (m>0) ou gauche (m<0).

Exercice 2 :
Nous voulons crire un programme en langage C qui calcule le nombre de jours couls entre
deux dates postrieures au 1er janvier 1900. Ces dates sont donnes par loprateur sous la
forme jj/mm/aaaa.
1. Ecrire une fonction permettant de lire au clavier une date et de vrifier sa validit. Le
format propos pour cette fonction est :
int lire_date (int *jour, int *mois, int *annee)

2. Ecrire une fonction traduisant une date en un entier reprsentant le nombre de jours couls
depuis le 1er janvier 1900. Le format propos est :
int nb_jours (int jour, int mois, int annee)

3. Ecrire la fonction main laide de ces deux fonctions.

Exercice 3 :
Ecrire une fonction C calculant la parit dun nombre binaire de 32 bits. Rappel la parit dun
nombre binaire correspond la parit du nombre de bits 1. Par exemple loctet 001100112
est de parit paire.

Exercice 4 :
Ecrivez un programme qui lit deux entiers n et m en entre, tels que n m et qui affiche dans
l'ordre, tous les entiers de n m inclus, spars par des espaces.
Votre programme doit utiliser une fonction rcursive et non une boucle.

Exercice 5 :
Lors d'une course de relais, une quipe est compose de 4 relayeurs. Le temps ralis par
chaque participant est exprim sous forme des nombres de minutes, de secondes et de
centimes de seconde. On demande d'crire un programme en C permettant de saisir les temps
effectus par chaque relayeur d'une quipe et donnant galement le temps total de l'quipe
ainsi que le meilleur et le moins bon temps. Un temps (minutes, secondes et centimes) est
reprsent par une structure dfinir.
1. Donnez la dfinition du type structur chrono.
2. Ecrivez une fonction ajoute_chrono() destine additionner deux temps stocks dans
de telles structures. Pour cela, dfinissez et justifiez la faon dont les paramtres devront tre
passs la fonction.
3. Ecrivez une fonction compare_chrono() qui compare deux temps et renvoie -1 si le
premier temps est infrieur au deuxime, +1 s'il est suprieur et 0 s'ils sont identiques.
4. Utilisez ces deux fonctions pour calculer la somme des temps des relayeurs ainsi que le
meilleur et le moins bon temps au fur et mesure de la saisie de chacun de ces temps.
Affichez la somme des temps, le meilleur et le moins bon temps la fin de la saisie. Crez des
fonctions annexes si ncessaire.