南邮OJ 1013 判断三角形
来源:互联网 发布:mac星球基地中文版 编辑:程序博客网 时间:2024/04/29 13:06
题目描述:给定三条边的长度,判断能否组成三角形,如果可以,判断三角形的形状。
题目链接:点击打开链接
<span style="font-family:SimSun;font-size:14px;">#include <iostream>#include <cmath>using namespace std;int main(){double a[3]={};cin >> a[0] >> a[1] >> a[2];while ((a[0] !=0 )||(a[1]!=0)||(a[2]!=0)){ if ((a[0]+a[1] > a[2])&&(a[2]+a[1] > a[0])&&(a[2]+a[1] > a[0])) { if ((((a[0]==a[1])&&(a[0]!=a[2]))||((a[0]==a[2])&&(a[0]!=a[1]))||((a[2]==a[1])&&(a[1]!=a[0])))&& ((fabs(a[0]*a[0]-a[1]*a[1]-a[2]*a[2])<0.001)||(fabs(a[1]*a[1]-a[0]*a[0]-a[2]*a[2])<0.001)||(fabs(a[2]*a[2]-a[1]*a[1]-a[0]*a[0])<0.001))) {cout << "“Isosceles right triangle”" << endl; } else if ((fabs(a[0]*a[0]-a[1]*a[1]-a[2]*a[2])<0.001)||(fabs(a[1]*a[1]-a[0]*a[0]-a[2]*a[2])<0.001)||(fabs(a[2]*a[2]-a[1]*a[1]-a[0]*a[0])<0.001)) {cout << "“Right triangle”" << endl; } else if (((a[0]==a[1])&&(a[0]!=a[2]))||((a[0]==a[2])&&(a[0]!=a[1]))||((a[2]==a[1])&&(a[1]!=a[0]))) { cout << "“Isosceles triangle”" << endl; } else if ((a[0]==a[1])&&(a[1]==a[2])) {cout << "“Equilateral triangle”" <<endl; } else { cout << "“General triangle”" << endl; } } else {cout << "“Not a triangle”" << endl; } cin >> a[0] >> a[1] >> a[2];}cout << "End" << endl;return 0;}</span>
这是我个人写的代码,怎么提交都不行,后来看到别人的代码顿时觉得自己真的是太low了。思想都没有搞清楚!
<span style="font-family:SimSun;font-size:14px;">#include<iostream>#include<cmath>using namespace std;int main(){ float a,b,c; cin>>a>>b>>c; while((a!=0)&&(b!=0)&&(c!=0)) { if((a+b-c>=0.001)&&(b+c-a>=0.001)&&(c+a-b>=0.001)) { if((fabs(a-b)<0.001)&&(fabs(a-c)<0.001))cout<<"Equilateral triangle"<<endl; else{if((fabs(a-b)<0.001)||(fabs(b-c)<0.001)||(fabs(a-c)<0.001)){ if((fabs(a*a-b*b-c*c)<0.001)||(fabs(b*b-a*a-c*c)<0.001)||(fabs(c*c-a*a-b*b)<0.001))cout<<"Isosceles right triangle"<<endl; else cout<<"Isosceles triangle"<<endl;}else{ if((fabs(a*a-b*b-c*c)<0.0001)||(fabs(b*b-a*a-c*c)<0.0001)||(fabs(c*c-a*a-b*b)<0.0001))cout<<"Right triangle"<<endl; elsecout<<"General triangle"<<endl;} } }elsecout<<"Not a triangle"<<endl;cin>>a>>b>>c;}cout<<"End"<<endl;return 0;}</span>
首先思想上的分析:第一,考虑三条边都是相等的,即为等边三角形。第二,有两条边相等的,即为等腰三角形。如果有两边相等且构成直角三角形的,即为等腰直角三角形。第三,当三条边都不相等时,考虑是否可以构成直角三角形。第四,剩下来的就是一般的三角形了。当然前提是要能构成三角形!
另外题目的精确度,之前没有考虑到,一直以为没有用的,后来看到别人的代码才知道是有用的!将一些关系进行转换,用于精确度。本题中的精确度精度为0.0001,如果是0.00001的话提交会有错误!
0 0
- 南邮 OJ 1013 三角形判断
- 南邮OJ 1013 判断三角形
- 第十一周 OJ 判断三角形
- 九度oj 1048 判断三角形类型
- //九度OJ 1048 判断三角形类型
- 九度 OJ 1048:判断三角形类型
- 【九度OJ】:1048 判断三角形类型
- 第十一周oj题判断三角形
- 第十一周OJ(2)判断三角形
- 第十一周OJ——判断三角形
- 第11周 oj 判断三角形
- 第十一周 OJ总结<2>-判断三角形
- 第十一周 oj训练 判断三角形
- 第十一周-OJ-B判断三角形
- oj-11-B-判断三角形的形状
- 九度oj-1048-判断三角形类型
- 南邮ACM 1013 三角形判断 JAVA解法
- 1013_三角形判断
- 十月十五日:提前安排
- C++指针详解
- DXP中PCB各层的作用
- [转] iOS --- ReactiveCocoa - iOS开发的新框架
- XML & JSON
- 南邮OJ 1013 判断三角形
- 关于Android Studio替换为同名图片后,运行报错问题解决办法
- C++类内存对象模型
- python -简单的数据库支持
- eclipse,tomcat内存溢出内存溢出解决办法查看内存
- Git发生SSL certificate problem: certificate ha错误的解决方法
- mongodb增删改查操作汇总
- jQuery对象与DOM对象之间的转换方法
- properties配置文件的读取工具类