public class SurfaceRectangleAvecStructure { //////////////////////////////////////////////////// /* 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 rectangle du plan */ static class Rectangle2D { Position2D p1 = new Position2D(); Position2D p2 = new Position2D(); }; /* Calcul de la surface d'un rectangle */ static double surfaceRectangle(Rectangle2D r) { double surface; surface = Math.abs(r.p2.x-r.p1.x)* Math.abs(r.p2.y-r.p1.y); return surface; } //////////////////////////////////////////////////// /* Saisie au clavier de deux coins opposes */ /* d'un rectangle 2D */ static Rectangle2D saisirRectangle2D() { Rectangle2D r = new Rectangle2D(); Ecran.afficher("SVP, x1? "); r.p1.x = Clavier.saisirDouble(); Ecran.afficher("SVP, y1? "); r.p1.y = Clavier.saisirDouble(); Ecran.afficher("SVP, x2? "); r.p2.x = Clavier.saisirDouble(); Ecran.afficher("SVP, y2? "); r.p2.y = Clavier.saisirDouble(); return r ; } /* Programme principal */ public static void main(String [] args) { Rectangle2D r; double srf; Ecran.afficherln("SVP, positions de 2 coins opposes: "); r = saisirRectangle2D(); srf = surfaceRectangle(r); Ecran.afficherln("La surface est ",srf); } }