public class TestInclusionAvecStructure {

////////////////////////////////////////////////////
  
/* Type agrege de stockage d'une position du plan */

  static class Position2D {
    double x = 0.0;
    double y = 0.0; };

/* Type agrege de stockage d'un cercle du plan    */

  static class Cercle2D {
    Position2D centre = new Position2D(); 
    double rayon = 1.0; };

/* Test de l'inclusion d'une position du plan     */
/* dans un cercle du plan                         */

  static boolean testInclusion(Position2D p,
                               Cercle2D c) {
    double dx;
    double dy;
    double distance;
    boolean inclus;
    dx = p.x-c.centre.x;
    dy = p.y-c.centre.y;
    distance = Math.sqrt(dx*dx+dy*dy);
    inclus = ( distance <= c.rayon );
    return inclus;
  }

////////////////////////////////////////////////////

/* Saisie au clavier des coordonnees              */
/* d'une position du plan                         */

  static void saisirPosition2D(Position2D p) {
    Ecran.afficher("SVP, x? ");
    p.x = Clavier.saisirDouble();
    Ecran.afficher("SVP, y? ");
    p.y = Clavier.saisirDouble();
  }

/* Saisie au clavier des parametres de definition */
/* d'un cercle du plan                            */

  static void saisirCercle2D(Cercle2D c) {
    Ecran.afficher("SVP, rayon? ");
    c.rayon = Clavier.saisirDouble();
    saisirPosition2D(c.centre);
  }

/* Programme principal                            */

  public static void main(String [] args) {
    Cercle2D c = new Cercle2D();
    boolean inclus;
    Position2D p = new Position2D();
    Ecran.afficherln("SVP, position du point: ");
    saisirPosition2D(p);
    Ecran.afficherln("SVP, parametres du cercle: ");
    saisirCercle2D(c);
    inclus = testInclusion(p,c);
    Ecran.afficherln("Le point est inclus :",inclus);
  }
}