《C/C++/Java/Pascal 程序设计基础》习题集之分支-02. 三角形判断(15)

来源:互联网 发布:北京php培训公司排名 编辑:程序博客网 时间:2024/05/17 09:11

分支-02. 三角形判断(15)

给定平面上任意三个点的坐标(x1,y1)、(x2,y2)、(x3,y3),检验它们能否构成三角形。

输入格式:

输入在一行中顺序给出6个[-100, 100]范围内的数字,即3个点的坐标x1, y1, x2, y2, x3, y3。

输出格式:

若这3个点不能构成三角形,则在一行中输出“Impossible”;若可以,则在一行中输出该三角形的周长和面积,格式为“L = 周长, A = 面积”,输出到小数点后2位。

输入样例1:
4 5 6 9 7 8
输出样例1:
L = 10.13, A = 3.00
输入样例2:
4 6 8 12 12 18
输出样例2:
Impossible
代码实现:
import java.io.BufferedReader;import java.io.InputStreamReader;import java.text.DecimalFormat;/** * @ClassName: Main * @author: ybl * @date 2014-9-6 下午3:30:32 *  */public class Main {static class Point {float x;float y;}private static boolean checkValid(Point p1) {if (p1.x >= -100 && p1.x <= 100 && p1.y >= -100 && p1.y <= 100) {return true;}return false;}private static double getLength(Point p1, Point p2) {return Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));}public static void main(String[] args) {Point p1 = new Point();Point p2 = new Point();Point p3 = new Point();while (true) {BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));try {String aString = reader.readLine();boolean result = false;String space = " ";if (aString != null && aString.contains(space)) {String[] aStrings = aString.split(space);if (aStrings != null && aStrings.length == 6) {try {p1.x = (Float.parseFloat(aStrings[0]));p1.y = (Float.parseFloat(aStrings[1]));p2.x = (Float.parseFloat(aStrings[2]));p2.y = (Float.parseFloat(aStrings[3]));p3.x = (Float.parseFloat(aStrings[4]));p3.y = (Float.parseFloat(aStrings[5]));if (checkValid(p1) && checkValid(p2) && checkValid(p3)) {result = true;}} catch (Exception e) {// TODO: handle exception}}}if (result) {break;} else {System.out.println("Input error!Please try again...");continue;}} catch (Exception e) {// TODO: handle exception}}double l1 = getLength(p1, p2);double l2 = getLength(p1, p3);double l3 = getLength(p2, p3);if(l1+l2<=l3 || l1+l3<=l2 || l2+l3<=l1){System.out.println("Impossible");} else {String L;DecimalFormat df = new DecimalFormat("##0.00");L = df.format(l1 + l2 + l3);float A = (float) (0.5*(p1.x*p2.y+p2.x*p3.y+p3.x*p1.y-p1.x*p3.y-p2.x*p1.y-p3.x*p2.y));System.out.println("L = " + L + ", " + "A = " + df.format(Math.abs(A)));}}}


                                             
0 0