《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
- 《C/C++/Java/Pascal 程序设计基础》习题集之分支-02. 三角形判断(15)
- PAT 《C/C++/Java/Pascal 程序设计基础》习题集 (1) IO
- 《C/C++/Java/Pascal 程序设计基础》习题集 解题1
- 《C/C++/Java/Pascal 程序设计基础》习题集 解题2
- 《C/C++/Java/Pascal 程序设计基础》习题集 解题3
- 《C/C++/Java/Pascal 程序设计基础》习题集 解题4
- 分支-02. 三角形判断(15)
- 分支-02. 三角形判断(15)
- 分支-02. 三角形判断(15)
- 分支-02. 三角形判断(15)
- 分支-02. 三角形判断(15)
- 分支-02. 三角形判断(15)
- 分支-02. 三角形判断
- 分支-02. 三角形判断
- 分支-02. 三角形判断
- Java入门基础之习题集
- 分支-02 三角形判断(15)
- 巴斯卡(Pascal)三角形 (C语言实现)
- Android 模拟系统事件(三)
- nyoj 803 A/B Problem 【Java大数】
- 芯片互联设计
- 1.C++异常处理
- 使用jmeter进行性能测试-Jmeter教程及技巧汇总
- 《C/C++/Java/Pascal 程序设计基础》习题集之分支-02. 三角形判断(15)
- Android无法生存R文件解决方案
- 黑马程序员 【】java学习之路——计算字符串中字母出现的次数
- Tomcat自定义classLoader加密解密
- 快速排序(java实现)
- nyoj 524 A-B Problem 【Java大数】
- openGL学习之三角形等分
- Android项目中的对话框
- UVa 1329 Corporative Network