c++的三角形证明题程序代码 10

设有任意正三角形ABC,其三条边BC、CA,AB上分别有一点A1、B1、C1,而且有AC1=2C1B,BA1=2A1C,CB1=2B1A。编制程序验证由线段AA1、BB1... 设有任意正三角形ABC,其三条边BC、CA,AB上分别有一点A1、B1、C1,而且有AC1=2C1B,BA1=2A1C,CB1=2B1A。编制程序验证由线段AA1、BB1、CC1相交而成的三角形A2B2C2的面积是正三角形ABC的面积的七分之一。
大哥我是编程题目,不是数学题,看清楚了,ok?哪位高手指点方法,不一定是全部代码,指点下,我会追问!谢谢啦
展开
 我来答
听说球
2013-11-09
知道答主
回答量:1
采纳率:0%
帮助的人:1441
展开全部
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <string>
using namespace std;
typedef struct
{ float x;//x坐标
float y;//y坐标
}TwoD;//用结构体表示二维坐标

double Area (float,float,float);//求面积函数
TwoD Thirddot(TwoD,TwoD);//求三分点函数
TwoD Crossdot(TwoD,TwoD,TwoD,TwoD);//求两线交点函数
float Distance(TwoD,TwoD);//求两点距离函数

//求三分点函数
TwoD Thirddot(TwoD DotA,TwoD DotB)
{ TwoD DotC;
DotC.x=(DotA.x+2*DotB.x)/3;
DotC.y=(DotA.y+2*DotB.y)/3;
return (DotC);
}

//求两线交点函数
TwoD Crossdot(TwoD DotA,TwoD DotB,TwoD DotC,TwoD DotD) //即AB和CD交点
{ float a,b;
TwoD DotE;
a=(DotA.y-DotB.y)/(DotA.x-DotB.x);
b=(DotC.y-DotD.y)/(DotC.x-DotD.x);
DotE.x=(DotC.y-DotA.y+a*DotA.x-b*DotC.x)/(a-b);
DotE.y=a*(DotE.x-DotA.x)+DotA.y;
return (DotE); }

//三角形面积函数
double Area(float a,float b,float c)
{ float temp;
double s;
temp=(a+b+c)/2;
s=sqrt(temp*(temp-a)*(temp-b)*(temp-c));
return (s); }

//两点距离函数
float Distance(TwoD DotA,TwoD DotB)
{float d;
d=sqrt((DotA.x-DotB.x)*(DotA.x-DotB.x)+(DotA.y-DotB.y)*(DotA.y-DotB.y));
return (d);
}

//int _tmain(int argc,_TCHAR* argv[])
int main()
{ TwoD DotA,DotB,DotC;//外三角形个顶点
TwoD DotA1,DotB1,DotC1;//3个分点
TwoD DotA2,DotB2,DotC2;//内三角形个顶点
float a,b,c,a1,b1,c1;//外,内三角形的边
double s,s1,n;//外三角形面积,内三角形面积,面积比值
//TwoD A2,B2,C2;//3个分点
cout<<"inputdata please"<<endl;
cin>>DotA.x;
cin>>DotA.y;
cin>>DotB.x;
cin>>DotB.y;
cin>>DotC.x;
cin>>DotC.y;//输入个顶点坐标

a=Distance(DotA,DotB);
b=Distance(DotB,DotC);
c=Distance(DotB,DotC);//求外三角形边

if( ((a+b)<=c)||((b+c)<=a)||((a+c)<=b) )
cout<<"不能构成三角形!"<<endl;//判断能不能构成三角形
else
{
DotA1=Thirddot(DotA,DotB);
DotB1=Thirddot(DotB,DotC);
DotC1=Thirddot(DotC,DotA);//求三个三分点

DotA2=Crossdot(DotA,DotB1,DotC1,DotB);
DotB2=Crossdot(DotA1,DotC,DotC1,DotB);
DotC2=Crossdot(DotA,DotB1,DotA1,DotC);//求内三角形个顶点

a1=Distance(DotA2,DotB2);
b1=Distance(DotB2,DotC2);
c1=Distance(DotA2,DotC2);//求内三角形边长

s=Area(a,b,c);//外三角形面积

s1=Area(a1,b1,c1);//内三角形面积
n=s/s1;
cout<<"the scanle of their areas is"<<n<<endl;//打印出比值
}

return 0;
}
正解
也也胡言吗2514
2011-05-31 · TA获得超过6.5万个赞
知道大有可为答主
回答量:3万
采纳率:0%
帮助的人:3870万
展开全部
用坐标方法求吧。
求出直线交点的坐标,再求小三角形的边长,再计算面积。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
taojunqi123
2011-06-06
知道答主
回答量:5
采纳率:0%
帮助的人:8506
展开全部
#include <iostream.h>
#include<math.h>
int main()
{
double AC,AB,BC,AC1,BA1,CB1,p,S,s;
cout<<"ÊäÈëÈý½ÇÐεÄÈý¸ö±ß(˳ÐòAC,AB,BC)"<<endl;
cin>>AC>>AB>>BC;
p=(AC+AB+BC)/2;
S=sqrt(p*(p-AB)*(p-AC)*(p-BC));
AC1=AB*2/3;
BA1=BC*2/3;
CB1=AC*2/3;
cout<<"\nAC1="<<AC1<<"\nBA1="<<BA1<<"\nCB1"<<CB1<<endl;
s=(S*(2/3)+S*(2/3)+S*(2/3))/3;
cout<<"СÈý½ÇÐÎÃæ»ýÊÇ"<<s<<endl;
cout<<S/s<<endl;
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式