C语言求任意四边形的面积

来源:百度知道 编辑:UC知道 时间:2024/06/07 05:57:54
如果四边形四个边的长度分别为a、b、c、d,一对对角之和为2α,则其面积为:
S = sqrt((s-a)*(s-b)*(s-c)*(s-d) - a*b*c*d*cos2α);
其中s = (a+b+c+d)/2;
定义一个函数计算任意四边形的面积,前提是给出四边形的各条边长度,以及一对对角的和。
关于输入
输入分五行
前四行每行输入一个浮点数,分别是四边形四条边的长度。
第五行输入一个0到360之间的浮点数,表示四边形一对对角之和(角度制)。
关于输出
输出只有一行,输出计算得到的四边形面积,结果保留4位小数。
当公式中根号内的值计算出负值时,应给出Invalid input的提示。
例子输入
3
4
5
5
145
例子输出
16.6151

下面是我写的程序...数学学得不是很好.. 公式理解错误..
得不到正确答案... 帮我改该.

#include <stdio.h>
#include <math.h>

void main ( )
{
float a,b,c,d,af,s,S;

scanf("%f%f%f%f%f",&a,&b,&c,&d,&af);

s=(a+b+c+d)/2;
af=cos(af);
af=af*af;
S=sqrt((s-a)*(s-b)*(s-c)*(s-d)-a*b*c*d*af*af);

if(S<0)
printf("Invalid input\n");
else
printf("%.4f\n",S);

}
照你的程序结果还是不对.
你程序的结果是17.7561.跟题目不一样

把他的答案稍作修改就行啦~~你也在学C++?……我们有一个一模一样的题……
#include <stdio.h>
#include <math.h>

int main(void)
{
float a,b,c,d,af,s,S;

scanf("%f%f%f%f%f",&a,&b,&c,&d,&af);
s=(a+b+c+d)/2.0;
af=cos(af/2.0*3.1415926/180.0);
S=sqrt((s-a)*(s-b)*(s-c)*(s-d)-a*b*c*d*af*af);
if(S<0)
printf("Invalid input\n");
else
printf("%.4f\n",S);
return 0;
}

#include <stdio.h>
#include <math.h>

int main(void)
{
float a,b,c,d,af,s,S;

scanf("%f%f%f%f%f",&a,&b,&c,&d,&af);

s=(a+b+c+d)/2.0;
af=cos(2.0*af/180.0);
S=sqrt((s-a)*(s-b)*(s-c)*(s-d)-a*b*c*d*af);

if(S<0)
printf("Invalid input\n");
else
printf("%.4f\n",S);

return 0;
}

函数使用错误,cos