标题:c++面向对象 设计一个面基类,派生类为点,线,三角形三个!
只看楼主
cc1042738887
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-5-15
结帖率:0
已结贴  问题点数:10 回复次数:2 
c++面向对象 设计一个面基类,派生类为点,线,三角形三个!
下面是部分代码,可以实现三角形和线的长度的计算,但是三角形的面积没有实现,还有就是怎样加入旋转、平移等属性,将线段、三角形的端点坐标进行这些属性的操作


#include<iostream>
#include <cmath>
using namespace std;

class Line
{
public:
    Line (double x1,double y1) {X1=x1;Y1=y1;}
    friend double Line_length (Line &a,Line &b);
    //virtual void area();
private:
    int X1,Y1;
};


double Line_length (Line &a,Line &b)
{
    double Line_dis;
    double dx=a.X1-b.X1;
    double dy=a.Y1-b.Y1;
    Line_dis=sqrt(dx*dx+dy*dy);
    return Line_dis;
   
}


class Triangle
{
public:
    Triangle (double x2,double y2,double z2) {X2=x2;Y2=y2;Z2=z2;}
    friend double Triangle_length (Triangle &e,Triangle &d,Triangle &f);
    void area();
private:
    int X2,Y2,Z2;
};

double Triangle_length (Triangle &c,Triangle &d,Triangle &e)
{
    double Triangle_grith;
    double s1,s2,s3;
    double dx1=c.X2-d.X2;
    double dy1=c.Y2-d.Y2;
    double dx2=c.X2-e.X2;
    double dy2=c.Y2-e.Y2;
    double dx3=d.X2-e.X2;
    double dy3=d.Y2-e.Y2;
    s1=sqrt(dx1*dx1+dy1*dy1);
    s2=sqrt(dx2*dx2+dy2*dy2);
    s3=sqrt(dx3*dx3+dy3*dy3);
    Triangle_grith=s1+s2+s3;
    return Triangle_grith;
}

int main()
{
    float x1,y1,x2,y2;
    double d1;        /*线Line的距离*/
    double d2;        /*三角形Triangle 的周长*/
    float a1,b1,a2,b2,a3,b3;
    float c1=0;        /*将Z坐标都初始化为0,视为在XY平面内*/
    float c2=0;
    float c3=0;
    cout<<"/********计算线类Line**********/"<<endl<<endl;
    cout<<"请输入A点坐标:"<<endl<<"A:";
    cin>>x1>>y1;
    cout<<"请输入B点坐标:"<<endl<<"B:";
    cin>>x2>>y2;
    Line p1(x1,y1),p2(x2,y2);
    d1=Line_length(p1,p2);
    cout<<"AB之间距离: "<<d1<<endl;

    cout<<"/********计算三角形Triangle********/"<<endl<<endl;
    cout<<"请输入C点坐标: "<<endl<<"C:";
    cin>>a1>>b1;
    cout<<"请输入D点坐标: "<<endl<<"D:";
    cin>>a2>>b2;
    cout<<"请输入E点坐标: "<<endl<<"E:";
    cin>>a3>>b3;
    Triangle T1(a1,b1,c1),T2(a2,b2,c2),T3(a3,b3,c3);
    d2=Triangle_length(T1,T2,T3);
    cout<<"三角形的周长 :  "<<d2<<endl;



    return 0;

}
搜索更多相关主题的帖子: private include public double friend 
2015-05-17 11:45
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:5 
double Triangle_length (Triangle &c,Triangle &d,Triangle &e)
{
    double Triangle_grith;
    double s1,s2,s3;  
    double dx1=c.X2-d.X2;
    double dy1=c.Y2-d.Y2;
    double dx2=c.X2-e.X2;
    double dy2=c.Y2-e.Y2;
    double dx3=d.X2-e.X2;
    double dy3=d.Y2-e.Y2;
    s1=sqrt(dx1*dx1+dy1*dy1);
    s2=sqrt(dx2*dx2+dy2*dy2);
    s3=sqrt(dx3*dx3+dy3*dy3);
    if(s1+s2>s3&&s1+s3>s2&&s2+s3>s1){
         Triangle_grith=s1+s2+s3;
    }
    else Triangle_grith=-1;
    return Triangle_grith;
}

int main()
{
    float x1,y1,x2,y2;
    double d1;        /*线Line的距离*/
    double d2;        /*三角形Triangle 的周长*/
    float a1,b1,a2,b2,a3,b3;
    float c1=0;        /*将Z坐标都初始化为0,视为在XY平面内*/
    float c2=0;
    float c3=0;
    cout<<"/********计算线类Line**********/"<<endl<<endl;
    cout<<"请输入A点坐标:"<<endl<<"A:";
    cin>>x1>>y1;
    cout<<"请输入B点坐标:"<<endl<<"B:";
    cin>>x2>>y2;
    Line p1(x1,y1),p2(x2,y2);
    d1=Line_length(p1,p2);
    cout<<"AB之间距离: "<<d1<<endl;

    cout<<"/********计算三角形Triangle********/"<<endl<<endl;
    cout<<"请输入C点坐标: "<<endl<<"C:";
    cin>>a1>>b1;
    cout<<"请输入D点坐标: "<<endl<<"D:";
    cin>>a2>>b2;
    cout<<"请输入E点坐标: "<<endl<<"E:";
    cin>>a3>>b3;
    Triangle T1(a1,b1,c1),T2(a2,b2,c2),T3(a3,b3,c3);
    d2=Triangle_length(T1,T2,T3);
    if(d2>0)
    cout<<"三角形的周长 :  "<<d2<<endl;
    else cout<<"不能构成三角形"<<endl;
   
    return 0;
}
我觉得由点及面,利用继承特性分析之间关系以减少代码量,以上是感觉到的不足之处,如有不妥请见谅

[ 本帖最后由 林月儿 于 2015-5-17 17:37 编辑 ]

剑栈风樯各苦辛,别时冰雪到时春
2015-05-17 17:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-445399-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.331346 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved