/* Declaration de tableaux de variables              */
/* de type agrege position en deux dimensions        */
/* Developpement de fonctions dediees                */

public class TableauPosition2DAvecFonctions {
  
///////////////////////////////////////////////////////
  
  /* Type agrege de stockage d'une position du plan  */
  
  static class Position2D {
    double x = 0.0;
    double y = 0.0; };

  /* Fonction de creation et retour                  */
  /* d'un tableau de Position2D                      */
  /* n : La taille du tableau de position 2D a creer */

  static Position2D [] tableauDePosition2D(int n) {
    int i;
  /* Declaration du tableau                          */
    Position2D [] tpos = new Position2D[n];
  /* Initialisation des composantes par programme    */
    for ( i = 0 ; i < n ; i++ ) {
      tpos[i] = new Position2D(); }
    return tpos;
  }

  /* Fonction d'affichage d'une position 2D          */
  /* p : La position2D à afficher                    */
  
  static void affichage(Position2D p) {
    Ecran.formater("[%8.5f,%8.5f]",p.x,p.y);
  }

  /* Fonction d'affichage d'un tableau de Position2D */
  /* tpos : Le tableau de position 2D à afficher     */

  static void affichage(Position2D [] tpos) {
    int i;
    for ( i = 0 ; i < tpos.length ; i++ ) {
      affichage(tpos[i]);
      Ecran.sautDeLigne(); }
  }

  /* Programme principal                             */

  public static void main(String [] args) {
    final int TAILLE = 5;
    /* Declaration du tableau tpos1                  */
    /* par utilisation de la fonction ad hoc         */
    Position2D [] tpos1 = tableauDePosition2D(TAILLE);
    /* Affichage des Position2D du tableau tpos1     */
    Ecran.afficherln("Premier tableau");
    affichage(tpos1);
    /* Declaration du tableau tpos1                  */
    /* avec intialisation de ses champs              */
    /* lors de la declaration                        */
    Position2D [] tpos2 = { new Position2D(),
                            new Position2D(),
                            new Position2D() };
    /* Affichage des Position2D du tableau tpos2     */
    Ecran.afficherln("Second tableau");
    affichage(tpos2);
  }
  
///////////////////////////////////////////////////////
}