Time Limit: 1000 MS Memory Limit: 32768 KB
Description
现有一些边长为正整数的三角形的边长的统计数据 ,急需求出每个三角形的最大角。
不过由于技术问题,数据中有可能混杂有不是三角形的错误数据请注意。
Input
至少一组而且可能有很多组的测试数据
每组测试数据为一行,依次是用空格隔开的a b c 三个100以内正整数
Output
每行输出一组测试数据的结果
单位为弧度,保留三位小数。
对于不是三角形的错误数据,请输出一行“Error”(不带引号)
Sample Input
1 2 3
6 6 6
Sample Output
Error
1.047
Hint
理科数学选择填空级别
acos的参数是cos值,返回值是cos值对应角的弧度值,它的头文件是cmath,c++中使用三角函数时,角的表示方法都是弧度制的,传送参数和接受参数时要注意。
下面是代码:
#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
int maxm(int a,int b)
{
return a>b?a:b;
}
int minm(int a,int b)
{
return a<b?a:b;
}
int main()
{
int a,b,c;
int dmax,dmin,dmi;
double ans;
while(cin>>a>>b>>c)
{
if(a+b>c&&a+c>b&&b+c>a)
{
dmax=maxm(a,maxm(b,c));
dmin=minm(a,maxm(b,c));
if(dmax==a&&dmin==b||dmin==a&&dmax==b)
{
dmi=c;
}
else if(dmax==a&&dmin==c||dmin==a&&dmax==c)
{
dmi=b;
}
else if(dmax==c&&dmin==b||dmin==c&&dmax==b)
{
dmi=a;
}
ans=acos((dmin*dmin+dmi*dmi-dmax*dmax)/double(2*dmin*dmi));
printf("%.3lf\n",ans);
}
else
{
cout<<"Error"<<endl;
}
}
return 0;
}