| [Précédent] |
| 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] |