代码什么的要哭了 2022-04-26 15:58 采纳率: 67.9%
浏览 42
已结题

C++程序运行输出结果并不是最终结果,似乎是调用问题

运行结果好像不太对,结果只是triangle类的结果,并不是total的结果,求指教


/*设shape类为表示形状的抽象类,

里面有一个成员函数area( )用于求图形面积的函数,

为纯虚函数total( )则是一个通用的函数,

用于求不同形状的图形面积总和

shape类派生三角形类(triangle),矩形类(rectangle), 

并给出具体的求面积函数,

请将程序补充完整*/

//StudybarCommentBegin
//#include<iostream.h>
#include<math.h>
#include<iostream> 
using namespace std;
class shape
{
//StudybarCommentEnd

protected: 
    double x,y;
public:
    shape(){};
    shape(double a, double b)
    {
        x = a;
        y = b;
    }
    double area(){};
    virtual double total() = 0;
};
class triangle:public shape  //三角形类 
{
private:
    double n, height;
public:
    triangle(double nn, double h)
    {
        n = nn;
        height = h;
    }
    double area(){return ((1/2)*n*height);}
    double total(){}
    
};


//StudybarCommentBegin
class rectangle:public shape   //矩形类 
{
private:
    int width,length;
public:
    rectangle(int c=10,int d=5)//:shape(a,b)
       {width=c;length=d;}
    double area()
       {return width*length;}
    double total(){}
};
 

double total(shape *s[],int n) 
{ 
    double sum=0.0; 
    for(int i=0;i<n;i++)
        sum=sum+s[i]->area();
    return sum; 
}

int main()
{ 
    shape *sp[2] ;
    int x,y;
    cin>>x>>y;
    triangle one(x,y);
    rectangle two;
    sp[0]=&one;
    sp[1]=&two;
    cout<<"the total area is "<<total(sp,2)<<endl;
}
//StudybarCommentEnd
  • 写回答

1条回答 默认 最新

  • bostonAlen 2022-04-26 16:26
    关注
     
    /*设shape类为表示形状的抽象类,
    里面有一个成员函数area( )用于求图形面积的函数,
    为纯虚函数total( )则是一个通用的函数,
    用于求不同形状的图形面积总和
    shape类派生三角形类(triangle),矩形类(rectangle), 
    并给出具体的求面积函数,
    请将程序补充完整*/
     
    //StudybarCommentBegin
    //#include<iostream.h>
    #include<math.h>
    #include<iostream> 
    using namespace std;
    class shape
    {
    //StudybarCommentEnd
     
    protected: 
        double x,y;
    public:
        shape(){};
        shape(double a, double b)
        {
            x = a;
            y = b;
        }
        virtual double area(){};
        virtual double total() = 0;
    };
    class triangle:public shape  //三角形类 
    {
    private:
        double n, height;
    public:
        triangle(double nn, double h)
        {
            n = nn;
            height = h;
        }
        double area(){return (0.5*n*height);}
        double total(){return double(0);}
        
    };
     
     
    //StudybarCommentBegin
    class rectangle:public shape   //矩形类 
    {
    private:
        int width,length;
    public:
        rectangle(int c=10,int d=5)//:shape(a,b)
           {width=c;length=d;}
        double area()
           {return width*length;}
        double total(){return double(0);}
    };
     
     
    double total(shape *s[],int n) 
    { 
        double sum=0.0; 
        for(int i=0;i<n;i++)
            sum=sum+s[i]->area();
        return sum; 
    }
     
    int main()
    { 
        shape *sp[2] ;
        int x,y;
        cin>>x>>y;
        triangle one(x,y);
        rectangle two;
        sp[0]=&one;
        sp[1]=&two;
        cout<<"the total area is "<<total(sp,2)<<endl;
    }
    //StudybarCommentEnd
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月4日
  • 已采纳回答 4月26日
  • 创建了问题 4月26日

悬赏问题

  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 Macbookpro 连接热点正常上网,连接不了Wi-Fi。
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义