[Précédent]
[Index] | [Enoncé] | [Version imprimable]
[Prochain]

7.6
  Géométrie - Corrigé
Niveau 2
 
 
Fichiers:
  Geometrie.java    

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
import java.util.Scanner;

class Geometrie {

/**
 * Le programme principal se content de construire un
 * triangle, d'afficher son périmètre et d'afficher
 * s'il est isocèle ou non.
 */
    private static Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
        Triangle t = new Triangle(lirePoint(), lirePoint(), lirePoint());
        double perimetre = t.calculerPerimetre();
        System.out.println("Perimetre : " + perimetre);
        boolean isocele = t.testerIsocele();
        if (isocele)
            System.out.println("Le triangle est isocele");
        else
            System.out.println("Le triangle nést pas isocele");
    }
    
    // une méthode auxiliaire de main
    static Point lirePoint() {
        double x = 0;
        double y = 0;
        System.out.println("Construction d'un nouveau point");
        System.out.print("   Veuillez entrer x : ");
        x = scanner.nextDouble();
        System.out.print("   Veuillez entrer y : ");
        y = scanner.nextDouble();
        return (new Point(x,y));
    }
}


class Triangle {

    private Point p1, p2, p3;
    private double longueur1, longueur2, longueur3;

    /**
     * Le constructeur d'un Triangle fait appel
     * au constructeur de Point. Ce dernier lit les
     * coordonnées depuis le terminal.
     */
    public Triangle(Point point1, Point point2, Point point3) {
        // Construction de trois points:
        p1 = point1;
        p2 = point2;
        p3 = point3;
        // Les distances sont calculées et stockées dans des variables
        // d'instance. Les méthodes calculerPerimetre et testerIsocele
        // peuvent ainsi accéder aux valeurs précalculées et nous évitons
        // de les recalculer plusieurs fois.
        longueur1 = p1.calculerDistance(p2);
        longueur2 = p2.calculerDistance(p3);
        longueur3 = p3.calculerDistance(p1);
    }

    /**
     * Calcul du perimètre de l'instance courante (this).
     * @return le perimetre sous la forme d'un double
     */
    public double calculerPerimetre() {
        return (longueur1 + longueur2 + longueur3);
    }

    /**
     * Teste si l'instance courante (this) est un triangle isocèle
     * @return true si le triangle est isocèle et false sinon
     */
    public boolean testerIsocele() {
        return (longueur1 == longueur2
                    || longueur2 == longueur3
                    || longueur3 == longueur1);
    }
}



class Point {

    private double x, y;

    public Point(double x, double y) {
        this.x = x;
        this.y = y;
    }

    public double getX() {
        return x;
    }

    public double getY() {
        return y;
    }

    /**
     * Calcule la distance entre this et un point p
     * @param p un Point par rapport auquel on calcule la distance
     * @return la distance de this à p
     */
    public double calculerDistance(Point p) {
        // Calcule la distance entre deux points. Le premier point est
        // l'objet actuel (this). Le deuxième point (p) est envoyé en
        // paramètre.
        double x1 = this.x;
        double y1 = this.y;

        double x2 = p.getX();
        double y2 = p.getY();

        double xdiff = x1 - x2;
        double ydiff = y1 - y2;

        double somme = xdiff * xdiff + ydiff * ydiff;
        double distance = Math.sqrt(somme);

        return distance;
    }
}


 


[Précédent]
[Index] | [Enoncé] | [Version imprimable]
[Prochain]