已知三角形的三边求三角形的外接圆面积(nyoj1009)

来源:互联网 发布:Yum. lrzsz 编辑:程序博客网 时间:2024/04/28 06:04

已知三角形的三条边长,求这个三角形的外接圆的半径

方法一: 
先由余弦定理求出某角的余弦值:
cosA=(b^2+c^2-a^2)/2bc 
再求出该角的正弦值: 
sinA=√(1-(cosA)^2) 
然后利用正弦定理求得外接圆半径R :
R=a/(2sinA)

#include<stdio.h>#include<math.h>#include<string.h>#include<stdlib.h>#include<iostream>#include<algorithm>using namespace std;int main(){  double a,b,c,r,cosA,sinA;  while(~scanf("%lf%lf%lf",&a,&b,&c))  {      cosA=(b*b+c*c-a*a)/(2*b*c);     sinA=sqrt(1-cosA*cosA);     r=a/(2*sinA);     printf("%.2lf\n",r);  }    return 0;}


方法二: 
先用海伦公式求三角形的面积:

p=(a+b+c)/2

s=√〔p(p-a)(p-b)(p-c)〕

面积公式:

 s=1/2*bcsinA得
1/2*bcsinA=√〔p(p-a)(p-b)(p-c)〕 
所以sinA=2√〔p(p-a)(p-b)(p-c)〕/bc 
最后利用R=a/(2sinA)求出R


#include<stdio.h>#include<math.h>#include<string.h>#include<stdlib.h>#include<iostream>#include<algorithm>using namespace std;int main(){  double a,b,c,r,p,sinA,s;  while(~scanf("%lf%lf%lf",&a,&b,&c))  {     p=(a+b+c)/2;     s=sqrt(p*(p-a)*(p-b)*(p-c));//海伦公式求面积     sinA=2*s/(b*c);     r=a/(2*sinA);     printf("%.2lf\n",r);  }    return 0;}


0 0