设计一个“点”类,含坐标值(x,y),即成员x、y。
程序运行时由用户输入三个点,判断三点是否能构成一个三角形的三个顶点。如果不能构成则给予相应提示后退出;如果能构成再进一步判断是等边、等腰还是普通三角形,最后求其三角形的周长及面积并输出结果。
要求:
用C++类实现,分别设计类:点类Point、主程序类Program(含主函数)。
紧急求助!希望大家帮忙,谢谢!
设计一个“点”类,含坐标值(x,y),即成员x、y。
程序运行时由用户输入三个点,判断三点是否能构成一个三角形的三个顶点。如果不能构成则给予相应提示后退出;如果能构成再进一步判断是等边、等腰还是普通三角形,最后求其三角形的周长及面积并输出结果。
要求:
用C++类实现,分别设计类:点类Point、主程序类Program(含主函数)。
紧急求助!希望大家帮忙,谢谢!
首先,不大明白你的"主程序类Program(含主函数)"是什么意思.. 不好意思..没领会.所以就只是定义了Point类.
其次,三角形的类型由于题目要求等边、等腰和普通三角形. 所以只判断等边,等腰.如果不是等边也不是等腰就归类到普通.
下面的程序通过测试. 代码如下:
#include <iostream>
#include<cmath>
using namespace std;
class Point
{
public:
Point(){x=0;y=0;}
Point(double a,double b){x=a;y=b;}
void set(){cout<<"输入坐标点:";cin>>x>>y;}
friend bool test(Point a,Point b,Point c);
friend void side(Point a,Point b,Point c,double s[]);
private:
double x,y;
};
bool test(Point a,Point b,Point c)
{
if((a.y-b.y)/(a.x-b.x)!=(b.y-c.y)/(b.x-c.x))
return true;
else
return false;
}
void side(Point a,Point b,Point c,double s[])
{
double p;
p=pow(a.x-b.x,2)+pow(a.y-b.y,2);
s[0]=sqrt(p);
p=pow(a.x-c.x,2)+pow(a.y-c.y,2);
s[1]=sqrt(p);
p=pow(b.x-c.x,2)+pow(b.y-c.y,2);
s[2]=sqrt(p);
}
void area(double s[])
{
if(s[0]==s[1]&&s[1]==s[2])
cout<<"等边三角形!"<<endl;
else if(s[0]==s[1]||s[0]==s[2]||s[1]==s[2])
cout<<"等腰三角形!"<<endl;
else
cout<<"普通三角形!"<<endl;
cout<<"三条边="<<s[0]<<"\t"<<s[1]<<"\t"<<s[2]<<endl;
double p=(s[0]+s[1]+s[2]);
cout<<"三角形周长="<<p<<endl;
p/=2;
double s_area=sqrt(p*(p-s[0])*(p-s[1])*(p-s[2]));
cout<<"面积="<<s_area<<endl;
}
int main()
{
Point a,b,c;
double s[3],*p=s;
a.set();
b.set();
c.set();
if(test(a,b,c)) //判断是否能够构成三角形.
{
side(a,b,c,s);
area(s);
}
else cout<<"无法构成三角形!"<<endl;
}
哈哈 你这个是 老是 留的 题吧 我以前也写过的
这个其实很简单 你应该自己试着写写 解决不了的 再 问
你首先 得 弄明白 怎么 才能组成三角形 也就是 判断的 条件
相信 类 怎么写应该不用我说了 吧 在一个 就是
判断是 什么样的 三角形了
这个 只要 知道了 各个三角形的 特点 那么 也不难
其实 难得 不是 程序 是 思想
只要有思想了 就都能用程序表达 出来
相信自己 写写实再有不会的 地方法 再 问
32092823 我的 qq 我是个 学 编程的 学生 有什么 不会的 欢迎交流啊