配色: 字号:
类:三点坐标判断三角形及面积
2012-05-23 | 阅:  转:  |  分享 
  
//三个点的坐标去判断这个点围成的三角形及面积(根据两两之间的距离)

//用(第一个点的纵坐标减去第二个点的纵坐标)/(第一个点的横坐标减去第二个点的横坐标)---M1

//用(第三个点的纵坐标减去第二个点的纵坐标)/(第三个点的横坐标减去第二个点的横坐标)---M2

//如果M1!=M2说明这三个点构成是三角形M1=M2时不是三角形

#include"stdafx.h"

#include

#include

#include

usingnamespacestd;

classpoint//

{

public:

doublex,y;//此处定义为公有成员便于继承

voidset(doublex1,doubley1){x=x1;y=y1;}

voidprint(){cout<<"("<
doubledistance(pointf)//求两个点之间的坐标

{

returnsqrt((x-f.x)(x-f.x)+(y-f.y)(y-f.y));

}//两个点的横坐标相减的平方+纵坐标相减的平方最后开方

};//f.x表示另一点的横坐标

//举例:a和b间的距离--a.distance(b)此处是将a的横坐标减去b坐标的横坐标

classtrlangle:publicpoint//

{

public:

boolistrlangle(pointa,pointb,pointc)//判断是否为三角形因为是公有继承可以访问point对象的公有成员

{

boolkey;

if((a.y-b.y)/(a.x-b.x)==(c.y-b.y)/(c.x-b.x))//举例:三个点的坐标

key=false;//用(第一个点的纵坐标减去第二个点的纵坐标)/(第一个点的横坐标减去第二个点的横坐标)---M1

else//用(第三个点的纵坐标减去第二个点的纵坐标)/(第三个点的横坐标减去第二个点的横坐标)---M2

key=true;//如果M1!=M2说明这三个点构成是三角形M1=M2时不是三角形

returnkey;

}

voidtrlangletype(doublea,doubleb,doublec)//判断三角形类型

{//其中的a/b/c表示三边的长

doublemax;

//此处判断直角三角形首先得找出最大的一边--此处是把第一边赋给最大的

max=a;

if(b>max)

max=b;

elseif(c>max)

max=c;//以上就找出三边中最大的一边

if(a==b||a==c||b==c)

cout<<"三角形是等腰三角形!"<
elseif(a==b&&b==c)

cout<<"三角形是等边三角形!"<
elseif(max==a&&maxmax==bb+cc)//a^2=b^2+c^2

cout<<"三角形是直角三角形!"<
elseif(max==b&&maxmax==aa+cc)//b^2=a^2+c^2

cout<<"三角形是直角三角形!"<
elseif(max==c&&maxmax==aa+bb)//c^2=a^2+b^2

cout<<"三角形是直角三角形!"<
else

cout<<"三角形是普通三角形!"<


}

doublearea(doublea,doubleb,doublec)//求三角形面积

{

doubles,area1;

s=(a+b+c)/2;

area1=sqrt(s(s-a)(s-b)(s-c));

returnarea1;

}

};

intmain(intargc,charargv[])

{

doublen,m,f;

trlangleA;//定义了一个trlangle类的对象

pointa,b,c;//定义了一个point类的对象

cout<<"请输入a的坐标:"<
cin>>n>>m;

a.set(n,m);

a.print();//每输入一个坐标就输出一个坐标

cout<<"请输入b的坐标:"<
cin>>n>>m;

b.set(n,m);

b.print();//每输入一个坐标就输出一个坐标

cout<<"请输入c的坐标:"<
cin>>n>>m;

c.set(n,m);

c.print();//每输入一个坐标就输出一个坐标

cout<<"a和b两点间的距离:"<
cout<<"c和a两点间的距离:"<
cout<<"b和c两点间的距离:"<
if(A.istrlangle(a,b,c)==true)//注意此处的调用方法

{

A.trlangletype(a.distance(b),b.distance(c),c.distance(a));

f=A.area(a.distance(b),b.distance(c),c.distance(a));

cout<<"三角形面积为:"<
}

else

cout<<"此图形不是一个三角形!"<
getch();

return0;

}

献花(0)
+1
(本文系Honey_Dog首藏)