#include <stdio.h>
#define M 0.0000000001
int main()
{
double a,b,c,d,e,f,g,h,f;
while(scanf("%lf%lf%lf",&a,&b,&c)==3){
if(a>0&&b>0&&c>0){
if(a+b>c&&a+c>b&&b+c>a){
if((aa+bb-cc)/2ab<0||(aa+cc-bb)/2ac<0||(cc+bb-aa)/2c*b<0) printf("It's an Obtuse and ");
else if((aa+bb-cc)/2ab==0||(aa+cc-bb)/2ac==0||(cc+bb-aa)/2c*b==0) printf("It's an Right and ");
else printf("It's an Acute and ");
d = a-b;
e = a-c;
f = b-c;
if(d<0) d= -d; if(e<0) e= -e; if(f<0) f= -f;
if(d<=M&&e<=M&&f<=M) printf("Equilateral triangle.\n");
else if(d<=M||e<=M||f<=M) printf("Isosceles triangle.\n");
else printf("General triangle.\n");
}else printf("Can't form a triangle.\n");
}else printf("Can't form a triangle.\n");
}
return 0;
}
这个是我写的程序,就是不知道在判断是直角钝角的时候,怎么实现那个可以接受10的-10次方的误差,求大佬指导,下面是题目
不一定对,仅供参考:
#include <stdio.h>
#include <math.h>
#define M 0.0000000001
int main()
{
double a,b,c,d,e,f,g,h,f;
while (scanf("%lf%lf%lf",&a,&b,&c)==3) {
if(a>0&&b>0&&c>0) {
if(a+b>c&&a+c>b&&b+c>a) {
if (fabs((aa+bb-cc)/2/a/b)<-M||fabs((aa+cc-bb)/2/a/c)<-M||fabs((cc+bb-aa)/2/c/b)<-M) printf("It's an Obtuse and ");
else if (fabs((aa+bb-cc)/2/a/b)> M||fabs((aa+cc-bb)/2/a/c)> M||fabs((cc+bb-aa)/2/c/b) >M) printf("It's an Acute and ");
else printf("It's an Right and ");
d = a-b;
e = a-c;
f = b-c;
if(fabs(d)<=M&&fabs(e)<=M&&fabs(f)<=M) printf("Equilateral triangle.\n");
else if (fabs(d)<=M||fabs(e)<=M||fabs(f)<=M) printf("Isosceles triangle.\n");
else printf("General triangle.\n");
} else printf("Can't form a triangle.\n");
} else printf("Can't form a triangle.\n");
}
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: