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 près en calculant
On utilisera la majoration :
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+ |
|
( |
··· |
) |
··· |
ö ÷ ÷ ø |
ö ÷ ÷ ø |
. |
É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
-
une
Personne ;
- un entier représentant le numéro de compte ;
- un caractère représentant le type de compte (
'c' pour
compte courant, 'e' pour un compte épargne) ;
- un entier représentant le montant du compte.
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.