Contrôle Hors Classement d'Informatique




Promotion 2000




Sujet proposé par François Morain et Sébastien Tixeuil




28 juin 2001




Les exercices qui suivent sont indépendants et peuvent être traités dans n'importe quel ordre. On attachera une grande importance à la clarté, à la précision et à la concision de la rédaction.
Exercice 1. On veut calculer une approximation de
e =
¥
å
n=0
1
n!
à e près en calculant
eN =
N
å
n=0
1
n!
.
On utilisera la majoration :
|e-eN| £
1
N· N!
.

a) Écrire une méthode qui prend en argument e et calcule le plus petit entier N tel que 1/(N· N!) £ e.
b) On évalue eN à l'aide du schéma
eN = 1+
1
1
æ
ç
ç
è
1+
1
2
æ
ç
ç
è
1+
1
3
( ··· ) ··· ö
÷
÷
ø
ö
÷
÷
ø
.
Écrire la méthode correspondante et la méthode qui calcule e à e près.
Exercice 2. a) On demande d'écrire la classe Personne qui contient les éléments suivant : nom (une chaîne de caractères), date de naissance (trois entiers pour le jour, le mois, l'année). On écrira également le constructeur associé, ainsi que la méthode d'affichage public String toString() permettant d'afficher un objet de la classe à l'écran. Pour simplifier, on demande d'afficher le numéro du jour et le numéro du mois seulement.
b) On se propose de décrire simplement les informations nécessaires à la création d'un compte en banque. On demande de décrire la classe Compte dont les champs seront

Chaque nouveau client devra avoir un numéro de compte différent. Écrire le constructeur de la classe ainsi que des méthodes simulant le dépôt ou le retrait d'une somme d'un compte. On vérifiera qu'on ne peut effectuer de retrait que s'il reste un montant suffisant dans le compte. Si ce n'est pas le cas, on affichera un message d'erreur.
c) On représente le fichier des clients d'une banque par une classe Banque contenant un tableau tc de Compte ayant au plus NBMAXCLIENTS = 500 entrées. Écrire la définition des variables tc et NBMAXCLIENTS.
d) Les clients peuvent avoir plusieurs comptes. Écrire une méthode permettant d'afficher les différents comptes d'un client, leur type et leur numéro.
Exercice 3. a) Donner la méthode qui permet de déterminer la valeur minimale d'un tableau d'entiers t. Indiquer brièvement comment modifier cette méthode pour obtenir la valeur maximale. Si t contient n éléments, combien de comparaisons ces deux méthodes font-elles ?
b) Écrire une méthode
static int[] comparerDeuxEntiers(int a, int b){...}
qui prend en entrée deux entiers a et b et retourne un tableau à deux éléments contenant ces deux éléments dans l'ordre croissant.
c) Utiliser la méthode précédente pour écrire une méthode qui retourne un tableau à deux éléments contenant le minimum et le maximum de quatre entiers et qui fait le moins de comparaisons possibles. On indiquera ce nombre.
d) On se propose d'écrire une méthode qui détermine simultanément le minimum et le maximum d'un tableau t de taille n. Pour cela, on utilise une approche diviser pour résoudre. Pour déterminer le couple min-max de t[g..d[, on commence par déterminer le couple min-max de t[g..m[, puis celui de t[m..d[ avec m=(g+d)/2, puis on en déduit celui de l'intervalle qui nous intéresse. Écrire la méthode qui retourne le couple min-max sur l'intervalle [g..d[.
e) Dans le cas où n = 2k, combien la méthode précédente fait-elle de comparaisons ?


Ce document a été traduit de LATEX par HEVEA.