Vous êtes sur la page 1sur 2

Universite de la Mediterranee - Annee 2005-2006

Examen de Programmation 1
Mai 2006
Duree de lepreuve : 2 heures.
Les notes de cours, TD et TP sont autorisees. Les calculettes sont interdites.
Il y a 3 exercices `a traiter.
Cet examen est note sur 15 points. A cette note sera ajoutee la note de TD/TP, sur 5.

Exercice 1 (40 minutes, 5 points) Calculs sur un texte


Ecrire un programme qui effectue les operations decrites ci-dessous, en affichant le resultat de
chaque etape. Ce programme :
1. demande `a lutilisateur de donner un texte de 500 caract`eres au maximum, sans caract`eres
accentues (utiliser la fonction fgets pour saisir le texte) ;
2. calcule la longueur du texte (utiliser la fonction strlen) ;
3. remplace chaque lettre majuscule par la minuscule correspondante (rappel : le code ASCII
de A est 65, celui de a est 97) ;
4. compte le nombre doccurrences des caract`eres a, e et i.
Exemple dexecution :
Donner le texte (maximum 500 caracteres, pas de caracteres accentues) :
Le train partira dAvignon a 8h35 ; il arrivera a Lyon a 10h10.
Longueur du texte : 64 caracteres
En minuscules :
le train partira davignon a 8h35 ; il arrivera a lyon a 10h10.
Nombre de a : 9
Nombre de e : 2
Nombre de i : 5
Exercice 2 (40 minutes, 5 points) Calculs sur un tableau dentiers
Notre but est decrire un programme qui :
- remplit un tableau T de N entiers tires aleatoirement dans lintervalle [0, 20], pour N donne
par lutilisateur, et affiche le contenu de T ;
- pour un entier k de [0, 20] donne par lutilisateur, compte et affiche le nombre doccurrences
de k dans T .
Pour cela :
a) Ecrire une fonction void remplir tableau(int t[ ], int n) qui remplit le tableau t, de taille n,
avec n entiers tires aleatoirement dans [0, 20].
(Rappels : linstruction x=(int)(21*rand()/(double)RAND MAX) donne `a x une valeur enti`ere
aleatoire de lintervalle [0,20] ; linstruction srand(time(0)) permet dobtenir une suite de valeurs
aleatoires differente `a chaque nouvelle execution du programme.)

b) Ecrire une fonction void aff tableau(int t[ ], int n) qui affiche `a lecran le contenu du tableau
t de taille n.
c) Ecrire une fonction int compter occ(int x, int t[ ], int n) qui renvoie le nombre doccurrences
de x dans le tableau t de taille n.
d) Ecrire la fonction main qui demande `a lutilisateur de donner N , puis k, et appelle les
fonctions definies ci-dessus pour repondre au probl`eme pose.
Exemple dexecution :
Donner le nombre N dentiers `
a tirer : 25
Voici le contenu du tableau :
17 3 9 11 6 2 4 6 7 18 19 0 5 14
Quel entier k de [0,20] vous int
eresse ? : 9
Le nombre 9 apparait 2 fois dans le tableau.

11 12

15

11 20

Exercice 3 (40 minutes, 5 points) Tri dun tableau dentiers


Notre but est decrire un programme qui lit un fichier donnees.txt contenant une suite de n
entiers appartenant `a lintervalle [0,20], les trie en utilisant le principe du tri par casiers (cf le
TD n 8), et affiche le resultat du tri.
a) Ecrire une fonction int fichier vers tableau(int t[ ]) qui ouvre le fichier donnees.txt, lit les
valeurs quil contient et les ecrit dans le tableau t. Cette fonction renvoie le nombre n delements
ecrits dans t.
b) Ecrire une fonction void trier tableau(int t1[ ], int t2[ ], int n) qui effectue le tri des n
elements de t1 et les ecrit dans t2. Pour cela, dans cette fonction :
- on declare une variable C de type tableau de 21 entiers ;
- on parcourt t1 et on remplit C de telle facon que, `a la fin de lexecution de cette fonction,
pour chaque entier k de [0,20], C[k] est le nombre doccurrences de k dans t1 ;
- on parcourt C et on remplit le tableau t2 de telle facon que, `a la fin de lexecution de cette
fonction, t2 contient les elements de t1, tries par ordre croissant.
c) Re-ecrire la fonction void aff tableau(int t[ ], int n) de lexercice 2, qui affiche `a lecran le
contenu du tableau t de taille n.
d) Ecrire la fonction main qui appelle les fonctions definies ci-dessus, repond au probl`eme pose,
et affiche le contenu des tableaux.
Exemple dexecution (ici, n=22) :
Contenu du tableau T1 :
17 3 9 11 6 2 4 6 7 18
1 5
Contenu du tableau C :
1 2 1 1 2 2 2 1
0 2
0
3
Contenu du tableau T2 :
0
1 1 2 3 4 4 5 5 6 6 7 9

11 12

15

11

19

11

11

11

12

15

17

18

19

Vous aimerez peut-être aussi