刚开始学c++,有道题目请教高人
答案:2 悬赏:40
解决时间 2021-04-18 16:40
- 提问者网友:眉目添风霜
- 2021-04-18 01:12
把定义直角坐标系上的一个点的类作为基类,派生出一个描述一条直线的类(两点坐标确定一直线再派生出三角类(三点坐标确定一个三角形)。要求成员函数能求出两点间的距离、三角形的周长和面积。设计一个测试程序,并构成一个 完整的程序。
最佳答案
- 二级知识专家网友:星星坠落
- 2020-03-03 05:24
这个,个人作为从点到直线应该是包含的关系吧,虽然用多重继承也能从继承的角度来实现你要求的,不过这总给我感觉怪怪的。程序就不贴了~~~反正觉得程序很怪
如果楼主需要包含关系的代码的话,我再写好了~~~
如果楼主需要包含关系的代码的话,我再写好了~~~
全部回答
- 1楼网友:抱不住太阳的深海
- 2020-10-17 19:05
写好了,没错误
#include <iostream>#include <cmath>using namespace std;
class shape{public: virtual ~shape(){} virtual double area()=0;};
class circle:public shape{public: circle(double a,double b,double c):x(a),y(b),r(c){} double area(){return 3.14*r*r;}private: double x,y,r; };
class rect:public shape{public: rect(double a,double b,double c,double d):x(a),y(b),m(c),n(d){} double area(){return abs(x-m)*abs(y-n);}private: double x,y,m,n; };
class triangle:public shape{public: triangle(double a,double b,double c,double d,double e,double f):x(a),y(b),m(c),n(d),p(e),q(f){} double area();private: double x,y,m,n,p,q; };
double triangle::area(){ double a,b,c; a=sqrt((x-m)*(x-m)+(y-n)*(y-n)); b=sqrt((x-p)*(x-p)+(y-q)*(y-q)); c=sqrt((p-m)*(p-m)+(q-n)*(q-n)); p=(a+b+c)/2; return sqrt(p*(p-a)*(p-b)*(p-c));}
int main(){ double a,b,c,d,e,f; char s; shape *p; while(cin>>s) { if(s=='c'){ cin>>a>>b>>c; p=new circle(a,b,c); cout<<p->area()<<endl; } else if(s=='t'){ cin>>a>>b>>c>>d>>e>>f; p=new triangle(a,b,c,d,e,f); cout<<p->area()<<endl; } else if(s=='r'){ cin>>a>>b>>c>>d; p=new rect(a,b,c,d); cout<<p->area()<<endl; } }}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯