永发信息网

求高手解决C++编程题

答案:2  悬赏:10  手机版
解决时间 2021-04-24 06:49
  • 提问者网友:谁的错
  • 2021-04-23 11:35

  设计一个“点”类,含坐标值(x,y),即成员x、y。
  程序运行时由用户输入三个点,判断三点是否能构成一个三角形的三个顶点。如果不能构成则给予相应提示后退出;如果能构成再进一步判断是等边、等腰还是普通三角形,最后求其三角形的周长及面积并输出结果。
要求:
  用C++类实现,分别设计类:点类Point、主程序类Program(含主函数)。

紧急求助!希望大家帮忙,谢谢!

最佳答案
  • 五星知识达人网友:拜訪者
  • 2021-04-23 11:49

首先,不大明白你的"主程序类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;
}


全部回答
  • 1楼网友:青尢
  • 2021-04-23 13:23

哈哈 你这个是 老是 留的 题吧 我以前也写过的

这个其实很简单 你应该自己试着写写 解决不了的 再 问

你首先 得 弄明白 怎么 才能组成三角形 也就是 判断的 条件

相信 类 怎么写应该不用我说了 吧 在一个 就是

判断是 什么样的 三角形了

这个 只要 知道了 各个三角形的 特点 那么 也不难

其实 难得 不是 程序 是 思想

只要有思想了 就都能用程序表达 出来

相信自己 写写实再有不会的 地方法 再 问

32092823 我的 qq 我是个 学 编程的 学生 有什么 不会的 欢迎交流啊

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯