TP4 - Tableaux

De $1

Version de 22:42, 5 Jun 2025

cette version.

Revenir à liste des archives.

Voir la version actuelle

Cours 

Les paramètres de la ligne de commande

Affichage

  • Faire une application Java qui affiche les paramètres de la ligne de commande
  • Faire afficher les paramètres de la ligne de commande de façon triée (dans l'ordre lexicographique), non il ne faut PAS écrire une méthode de tri !

Des paramètres entiers ?

On veut faire une application Java qui fait la somme des arguments de la ligne de commande en supposant qu'il n'y ait que des entiers.

Exemple:

java Somme 12 25 40 -12

doit afficher le résultat: 65

Ecrire la classe Somme en Java.

Note: regarder la documentation de la méthode statique parseInt de la classe Integer.

Les vecteurs

On veut faire une classe qui modélise des vecteurs.

Les vecteurs 2D

  • Un Vecteur2D v est un objet qui a deux composantes v=< x, y >.
  • On sait lire la valeur de chacune des deux composantes x et y
  • On NE sait PAS modifier les valeurs des composantes d'un vecteur 
  • On sait multiplier un Vecteur v par un scalaire k (un nombre approché) pour obtenir un AUTRE vecteur k * v = < k*x, k*y >
  • On sait calculer le produit scalaire de deux vecteurs v1 et v2 pour obtenir un scalaire :  v1 * v2 = v1.x * v2.x + v1.y * v2.y
  • On sait transposer un vecteur v pour obtenir un AUTRE vecteur  vt = < y, x >
  • On sait ajouter deux vecteurs  v1 et v2 pour obtenir un AUTRE vecteur :  v1 + v2 = < v1.x + v2.x, v1.y + v2.y >
  • On sait afficher de manière textuelle les composantes d'un vecteur (méthode toString).

Proposer une classe Vecteur2D qui réalise toutes les opérations décrites ci-dessus.

Les vecteurs généralisés

Un vecteur généralisé de dimension n est un vecteur qui a n composantes. Les mêmes opérations que que sur le vecteur 2D sont possibles.

Les vecteurs sont construits de deux façons différentes:

  • Soit en donnant la valeur dans chaque composante, la dimension est déterminée en fonction du nombre "variable" de composantes
    • new Vecteur(12, 23, 40) construit un vecteur de dimension 3
    • new Vecteur(12) provoque une erreur (il n'est pas possible de construire un vecteur avec 1 seule composante !)
    • new Vecteur(64, 0, 12, 23) construit un vecteur de dimension 4
  • Soit en donnant en donnant la dimension et une partie (éventuellement nulle) des valeurs des composantes, 
    • Les autres composantes sont alors initialisées à zéro
    • new Vecteur(4); construit un vecteur de dimension 4 avec toutes les composantes à zéro
    • new Vecteur(2, 4, 5, 6); provoque une erreur, il y a plus de valeurs initiales que de composantes !
    • new vecteur(3, 10, 20); construit le vecteur à 3 dimensions suivants : <10, 20, 0>

Proposer une classe Vecteur.

Recherche

Regardez la documentation de la méthode Arrays.search discutée en cours. Cette méthode renvoie l'indice d'un élément e dans un tableau t. Si l'élément e n'est pas présent dans t alors la méthode renvoie la valeur -1.

Proposer une méthode rechercheDichotomique qui permet de trouver un Point dans un tableau supposé ordonné. On pourra utiliser la méthode Arrays.sort pour trier le tableau de points selon un ordre (par exemple, l'ordre lexicographique). Par contre, il est INTERDIT d'utiliser la méthode Arrays.binarySearch vue en cours et il faudra ré-implanter cette méthode. On rappelle pour cela le principe de la recherche dichotomique. 

Je cherche l'indice de l'élément e dans t du début à la fin :

  1. Je compare e à l'élément qui se trouve au milieu t[milieu]  
  2. Si t[milieu]==e, j'ai terminé et je renvoie l'indice milieu
  3. Si t[milieu]<e, je cherche l'élément e entre le début et le milieu  
  4. Si t[milieu]>e, je cherche l'élément e entre le milieu et la fin
  5. Je recommence en 1.