Задание 2. Периметр и площадь треугольника

This commit is contained in:
Victor 2013-09-16 16:20:14 +03:00
parent 1d39b148f8
commit 3f80ab9494
3 changed files with 78 additions and 1 deletions

View File

@ -1,5 +1,7 @@
package tse; package tse;
import tse.lr1.Triangle;
/** /**
* @author aNNiMON * @author aNNiMON
*/ */
@ -13,7 +15,15 @@ public class LR_1 implements ILabRab {
@Override @Override
public void execute(int index) { public void execute(int index) {
System.out.println(TITLES[index]); switch(index) {
case 0:
break;
case 1:
Triangle.main();
break;
case 2:
break;
}
} }
@Override @Override

View File

@ -5,6 +5,7 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.Scanner;
/** /**
* *
@ -39,4 +40,12 @@ public class Util {
} }
return text.toString(); return text.toString();
} }
public static double readDouble(Scanner sc) {
while (!sc.hasNextDouble()) {
System.out.println("Ошибка! Неверный формат!");
sc.next();
}
return sc.nextDouble();
}
} }

58
src/tse/lr1/Triangle.java Normal file
View File

@ -0,0 +1,58 @@
package tse.lr1;
import java.awt.geom.Point2D;
import java.util.Scanner;
import tse.Util;
/**
* Площадь и периметр треугольника.
* @author aNNiMON
*/
public class Triangle {
private final Scanner scanner;
private Point2D pointA, pointB, pointC;
public static void main() {
new Triangle().work();
}
public Triangle() {
scanner = new Scanner(System.in);
}
private void work() {
pointA = readPoint('A');
pointB = readPoint('B');
pointC = readPoint('C');
double sideAB = calcSideLength(pointA, pointB);
double sideBC = calcSideLength(pointB, pointC);
double sideAC = calcSideLength(pointA, pointC);
double perimeter = sideAB + sideBC + sideAC;
System.out.println("Периметр треугольника: " + perimeter);
double p = perimeter / 2;
double square = Math.sqrt(p * (p - sideAB) * (p - sideBC) * (p - sideAC));
System.out.println("Площадь треугольника: " + square);
}
private double calcSideLength(Point2D pt1, Point2D pt2) {
//double tempX = (pt2.getX() - pt1.getX());
//double tempY = (pt2.getY() - pt1.getY());
//return Math.sqrt(tempX * tempX + tempY * tempY);
return pt1.distance(pt2);
}
private Point2D readPoint(char symbol) {
System.out.println("Введите координаты точки "+ symbol +":");
return readCoodinates();
}
private Point2D readCoodinates() {
double x = Util.readDouble(scanner);
double y = Util.readDouble(scanner);
return new Point2D.Double(x, y);
}
}