习题3-5 三角形判断 (15分)

给定平面上任意三个点的坐标,检验它们能否构成三角形。

输入格式:
输入在一行中顺序给出六个[−100,100]范围内的数字

输出格式:
若这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

一、斜率

#include<stdio.h>
#include<math.h>
int main(void)
{double x1,y1,x2,y2,x3,y3;double k1,k2,k3;double L,A;scanf("%lf %lf %lf %lf %lf %lf",&x1,&y1,&x2,&y2,&x3,&y3);if(y1==y2==y3){  //在同一直线上(平行x轴) printf("Impossible");   }if(y1==y2||y1==y3||y2==y3){  //一条边平行x轴,一定为三角形 L=sqrt(pow((x1-x2),2)+pow((y1-y2),2))+sqrt(pow((x2-x3),2)+pow((y2-y3),2))+sqrt(pow((x1-x3),2)+pow((y1-y3),2));A=fabs(0.5*(x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2));printf("L = %.2f, A = %.2f",L,A);}if(y1-y2!=0&&y1-y3!=0&&y2-y3!=0){  //均不平行x轴,判断斜率 k1=(x1-x2)/(y1-y2);k2=(x1-x3)/(y1-y3);k3=(x2-x3)/(y2-y3);  if(k1!=k2&&k1!=k3&&k2!=k3){  //斜率各不相等L=sqrt(pow((x1-x2),2)+pow((y1-y2),2))+sqrt(pow((x2-x3),2)+pow((y2-y3),2))+sqrt(pow((x1-x3),2)+pow((y1-y3),2));A=fabs(0.5*(x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2));printf("L = %.2f, A = %.2f",L,A);}elseprintf("Impossible");}  return 0;
}

有bug,未通过测试

  • fabs():绝对值函数(浮点)
  • abs():绝对值函数(整型)
  • sqrt():平方根函数
  • pow(底数,指数):幂函数

二、直接用线段长短判断

#include<stdio.h>
#include<math.h>
int main(void)
{double x1,y1,x2,y2,x3,y3;double l1,l2,l3;double L,A;scanf("%lf %lf %lf %lf %lf %lf",&x1,&y1,&x2,&y2,&x3,&y3);l1=sqrt(pow((x1-x2),2)+pow((y1-y2),2));l2=sqrt(pow((x2-x3),2)+pow((y2-y3),2));l3=sqrt(pow((x1-x3),2)+pow((y1-y3),2));if(l1+l2>l3&&l1+l3>l2&&l2+l3>l1){L=l1+l2+l3;float p=L/2.0;A=sqrt(p*(p-l1)*(p-l2)*(p-l3));printf("L = %.2f, A = %.2f",L,A);}elseprintf("Impossible");return 0;
}
  • 注意:题中输入可能是非整数(第三个测试点),不能用int类型

给定平面上任意三个点的坐标,检验它们能否构成三角形。相关推荐

  1. 给定平面上任意三个点的坐标(x​1​​,y​1​​)、(x​2​​,y​2​​)、(x​3​​,y​3​​),检验它们能否构成三角形

    1.题目来源 作者: 杨起帆 单位: 浙江大学 时间限制: 200 ms 内存限制: 64 MB 代码长度限制: 16 KB 2.题目简述 给定平面上任意三个点的坐标(x​1​​,y​1​​).(x​ ...

  2. 给定平面上任意三个点的坐标(x​1,y​1)、(x​2​​ ,y​2​​)、(x​3​​ ,y​3​​),检验它们能否构成三角形

    给定平面上任意三个点的坐标(x​1,y​1).(x​2​​ ,y​2​​).(x​3​​ ,y​3​​),检验它们能否构成三角形. 输入:在一行中顺序给出六个[−100,100]范围内的数字,即三个点 ...

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

    给定平面上任意三个点的坐标(x1​,y1​).(x2​,y2​).(x3​,y3​),检验它们能否构成三角形. 输入格式: 输入在一行中顺序给出六个[−100,100]范围内的数字,即三个点的坐标x1 ...

  4. 7-74 三角形判断 (15 分) 给定平面上任意三个点的坐标(x1,​​ y1)、(x2,​​ y2)、(x3,​​ y3),检验它们能否构成三角形。PTA:中M2021春C、Java入门练习第I段

    7-74 三角形判断 (15 分) 给定平面上任意三个点的坐标(x1,​​ y1).(x2,​​ y2).(x3,​​ y3),检验它们能否构成三角形. 输入格式: 输入在一行中顺序给出六个[−100 ...

  5. c语言任意输入两点坐标,c语言题目急急急!给定平面任意两点的坐标(x1,y1)和(x2,? 爱问知识人...

    [问题描述]给定平面任意两点的坐标(x1,y1)和(x2,y2),求这两点之间的距离(保留两位小数).要求求距离的运算单独放在一个函数中,然后在main函数中调用. [输入形式]输入两点的坐标(x1, ...

  6. c语言平曲线坐标,问题描述】给定平面任意两点的坐标(x1,y1)和(x2,y2),求这两点之间的距离(保留两位小数)。...

    问题描述]给定平面任意两点的坐标(x1,y1)和(x2,y2),求这两点之间的距离(保留两位小数).要求求距离的运算单独放在一个函数中,然后在main函数中调用..[输入形式]输入两点的坐标(x1,y ...

  7. 本题要求实现一个函数,对给定平面任意两点坐标(x1​,y1​)和(x2​,y2​),求这两点之间的距离。

    本题要求实现一个函数,对给定平面任意两点坐标(x1​,y1​)和(x2​,y2​),求这两点之间的距离. 函数接口定义: double dist( double x1, double y1, doub ...

  8. 本题要求实现一个函数,对给定平面任意两点坐标(x 1​ ,y 1​ )和(x 2​ ,y 2​ ),求这两点之间的距离。

    函数接口定义: double dist( double x1, double y1, double x2, double y2 ); 其中用户传入的参数为平面上两个点的坐标(x1, y1)和(x2, ...

  9. 已知法向量 求投影_已知一点坐标和平面方程,求此点在平面上的投影点的坐标。...

    展开全部 平面Ax+By+cZ+D=0的法向量为n=(A,B,C),M点在平面上的投影M'的坐标e69da5e887aa3231313335323631343130323136353331333431 ...

  10. c++ 圆上任意点坐标计算_已知圆上任意三点坐标如何编程来计算这个圆的圆心和半径...

    在过去的一周时间里一直在计算师兄交代的任务 ,啥都没学,就一直在干这活.其中呢,我想的一个算法中就用到了本文中的这个小知识(主要就是线性代数和高中的一些知识结合起来).师兄说做的这个东西的内容要保密, ...

最新文章

  1. 精彩回顾|《图像对齐算法》
  2. 2020年投入200000000美元,华为不只挖掘年薪百万的“天才少年”
  3. python3.8.5安装-centos7 编译安装python3.8.5
  4. 病毒式营销案例:多芬让“病毒”的诱惑自发传递
  5. The Digits String
  6. 电脑桌面便签_电脑桌面定时提醒记事本便签软件
  7. dataframe 一列的不同值_pandas | 详解DataFrame中的apply与applymap方法
  8. GitHub进一步了解
  9. rust投递箱连接箱子_一种用于防盗的牛奶投递箱的制作方法
  10. 当最有创意的开发者遇上移动云,谁将成为创新之王?
  11. VB中输入函数InputBox的用法
  12. paip.TechExcel DevSuite IIS 应用配置
  13. 欧姆龙PLC 通过CJ1W-EIP21实现在线编程
  14. folder汇总字段的实现
  15. win10家庭版系统 修改docker为国内镜像
  16. 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 3
  17. vue使用xe-utils通用函数库
  18. 湖中剑 前端周刊 #13 | Web录屏、Bundleless、低代码 Deco、Bundle Scanner、RN 低功耗蓝牙
  19. 成为合格插画设计师的要点
  20. 做个成功的嵌入式系统工程师

热门文章

  1. C语言每日一练——第50天:八进制转十进制
  2. python中temp是什么意思中文-请问Python里temp是什么意思?
  3. 项目不同阶段的风险特征
  4. oracle18c卸载方法,Oracle 18c Sharding 删除catalog 步骤
  5. 佳能MG3620卡纸后错误代码1401/5100
  6. 【Java】实现wav格式音乐的 播放、停止、循环播放、音量调节
  7. 计算机开机弹出的今日热点怎么关闭
  8. CSS3 background 与 渐变
  9. JAVA作业——工资个税计算器
  10. linux通过top和iostat查找io性能瓶颈