next up previous
Next: TD 4 et 5 Up: No Title Previous: TD 2: Java, premiers

TD 3: Tableaux et fonctions


1. Recopie des arguments.
On a utilisé au TD 2 la possibilité de passer des arguments au main d'un programme. On sait que ces arguments sont placés dans un tableau de type String[]. Lors de la lecture les éléments du tableau sont les chaînes de caractères de la ligne de commande qui sont découpées par les espaces de la ligne. La taille du tableau est donnée par le champ length. Voici un exemple:

// Programme de recopie des arguments.
class Echo {
  public static void main(String[] entree) {
    int i;   
    for ( i = 0; i < entree.length; i++ )
      System.out.println(entree[i]);
  } // fin de main
} // fin de la classe

Transformer ce programme pour que les longueurs de chacun de ses éléments soient écrites au lieu de leur valeur. (Utiliser la méthode length())
Transformer ce programme pour que les éléments soient écrits concaténés au maximum sur des lignes de 60 caractères au plus.

2. Statistiques.
Écrire des fonctions qui, étant donné un tableau d'entiers, font: - la somme des éléments du tableau;
- la recherche du maximum;
- la recherche et l'impression des maxima relatifs;
- la recherche simultanée du maximum et du minimum;
- la recherche du second maximum;
- la recherche de l'élément médian.

3. Réalisation d'une fonction pseudo-aléatoire.
Pour initialiser un tableau par des données aléatoires entières comprises entre 0 et un nombre M-1, on peut utiliser la méthode prédéfinie Math.random() qui fournit un float entre 0 et 1. Par exemple on écrira la méthode:
static void initialisation(int M) { 
   for (int i = 0; i < N; ++i) 
       tableau[i] =(int)(Math.random() * (M-1)); 
}

Une façon classique et éprouvée pour fabriquer des suites pseudo-aléatoires est de calculer une suite du type x[n+1]=(a x[n]+ c) mod m. On pourra choisir a=171, c=0, m=30269, ou encore a=16807, c=0, m=65537 comme dans Maclib.
Écrire une méthode qui réalise cette fonction.
La modifier pour faire en sorte qu'on puisse changer la valeur de départ.
Construire alors une fonction qui permette de tirer de façon équiprobable un entier compris entre 1 et N.

4. Permutations aléatoires.
Construire un tableau T de N nombres entiers tirés au hasard, de telle sorte que T[i]<= i, pour tout 0<= i<N.
Construire alors la permutation P dont le tableau précédent est celui des inversions: T[i]= le nombre de j<i tels que P[j]>P[i].
Une autre façon de faire est de remplir le tableau P par P[i]=i+1 puis, pour i de N-1 à 1, de tirer dans l'intervalle [0,i] la case j du tableau dans laquelle on mettra P[i] par échange avec P[j].
Écrire les programmes qui réalisent ces algorithmes.


next up previous
Next: TD 4 et 5 Up: No Title Previous: TD 2: Java, premiers
Jean-Marc Steyaert
2000-05-22