|
Université
de la Polynésie Française |
Examen
Algorithmique Licence Pro. TechniCom Année
2003-04 Jeudi 4
décembre 2003 |
1.Vous disposez de une heure trente,
2.vos documents personnels sont autorisés,
3.le barème, sur 21 !, est donné à titre indicatif et est susceptible d'être modifié.
Il s’agit de faire en sorte qu’une liste présentant plusieurs fois le même entier soit « nettoyée » de ces occurrences multiples pour ne plus faire apparaître chaque entier qu’une seule fois.
Exemple : Soit la liste T suivante : 12 4 8 4 12 9 7 12 8 13
La liste T après application de l’algorithme sera : 12 4 8 9 7 13
Pour cette question, vous supposerez que vous disposez d’un sous-programme Nombre_occurrences(Tab, taille, nombre) qui rend –1 si nombre ne se trouve pas dans le tableau Tab et la position de nombre si il fait partie du tableau.
Une chaîne de caractères n’est rien d’autre qu’un tableau de caractères au même titre qu’un tableau d’entiers. Vous écrirez donc vos algorithmes de la même manière (indices commençant à 0, variable donnant la taille, …)
Votre sous-programme prendra une chaîne de caractère de taille connue, un indice de début et un nombre de caractères, il construira une nouvelle chaîne qui sera la sous-chaîne extraite à partir de l’indice de début et ayant la longueur donnée. Si le nombre de caractères dépasse la longueur de la chaîne, on stoppe le processus à la fin de la chaîne.
Exemple 1 : Soit la chaîne « Bonjour », l’indice de début = 2 et le nombre de caractère 3, alors le résultat sera la chaîne « njo »
Exemple 2 : Soit la chaîne « Hello », l’indice 3 et le nombre de caractères 5, alors le résultat sera la chaîne « lo »
Votre sous-programme prendra une chaîne de caractère de taille connue, un indice de début et un nombre de caractères, il construira une nouvelle chaîne qui sera la chaîne d’origine dans laquelle vous aurez supprimé les caractères indiqués. Si le nombre de caractères à supprimer dépasse la longueur de la chaîne, on stoppe le processus à la fin de la chaîne.
Exemple 1 : Soit la chaîne « Bonjour », l’indice de début de suppression = 2 et le nombre de caractère 3, alors le résultat sera la chaîne « Bour »
Exemple 2 : Soit la chaîne « Hello », l’indice de début de suppression = 3 et le nombre de caractères 5, alors le résultat sera « Hel ».
La classe ListeEntier ci-dessous est supposée connue et dispose des attributs et méthodes expliqués par les commentaires. Le code Java des méthodes importe peu.
A partir de cette classe, il vous est demandé de :
|
/* La liste tab de taille longueur */ |
|
maxi <== 0 |
|
i <== 0 |
|
Répéter |
|
compte <== 0 |
|
/* Comptage des nombres pairs successifs */ |
|
tant que (tab[i] est pair) ET (i < longueur) |
|
compte <== compte + 1 |
|
i<== i + 1 |
|
fin_tant_que |
|
/* Si cette suite de pairs est plus longue que la précédente */ |
|
si compte > maxi |
|
alors maxi <== compte |
|
I <== i + 1 |
|
tant_que (i < longueur) Rendre(maxi) |
import java.io.*;
import java.util.Random;
/** Une classe de manipulation des listes d'entiers
* @author Patrick Capolsini - 2000
* @version 1.0
*/
public
class ListeEntier
{ /* Les éléments de la liste */
int elementsListe[];
/* Initialisation du générateur de nombres aléatoires */
private static Random hasard = new
Random();
/* Constructeur à partir de la seule taille de la liste à créer */
ListeEntier(int taille)
/** Constructeur (surcharge) à partir d'un tableau de String */
ListeEntier(String elem[])
/* Retourne la taille de la liste */
public int getDim()
/* Affichage des éléments de la liste */
public void affichage()
/* Tirage aléatoire des éléments d'une liste */
public void randomListe()
/* Tirage aléatoire des éléments d'une liste */
/* entiermax est la valeur maximum des entiers à tirer */
public void randomListe(int entiermax)
}