zoukankan      html  css  js  c++  java
  • [YTU]_2478( C++习题 虚函数-计算图形面积)

    题目描述

    编写一个程序,定义抽象基类Shape,由它派生出5个派生类: Circle(圆形)、Square(正方形)、Rectangle(矩形)、Trapezoid(梯形)、Triangle(三角形)。
    用虚函数分别计算几种图形面积,并求它们之和。
    要求用基类指针数组,使它每一个元素指向一个派生类对象。 

    输入

    圆的半径
    正方形的边长
    矩形的边长
    梯形的上底和下底,高
    三角形的底与高

    输出

    所有图形面积之和(结果保留两位小数)

    样例输入

    12.6
    3.5
    4.5 8.4
    2.0 4.5 3.2
    4.5 8.4

    样例输出

    total of all areas=574.11
    #include <iostream>
    #include <iomanip>
    using namespace std;
    class Shape
    {
    public:
        Shape(){}
        virtual float area()const=0;
    };
    class Circle:public Shape
    {
    public:
        Circle(float r):radius(r){}
    virtual float area()const {return radius*radius*3.1415926;}
    private:
        float radius;
    };
    class Square:public Shape
    {
    public:
        Square(float l):liang(l){}
        virtual float area() const{return liang*liang;}
    private:
        float liang;
    };
    class Rectangle:public Shape
    {
    public:
        Rectangle(float a,float b):chang(a),kuan(b){}
    virtual float area()const{return chang*kuan;}
    private:
        float chang,kuan;
    };
    class Trapezoid:public Shape
    {
    public:
        Trapezoid(float s,float x,float g):shang(s),xia(x),gao(g){}
    virtual float area()const{return (shang+xia)*gao*0.5;}
    private:
        float shang,xia,gao;
    };
    class Triangle:public Shape
    {
    public:
        Triangle(float d,float g):di(d),gao(g){}
    virtual float area()const{return di*gao*0.5;}
    private:
        float di,gao;
    };
    int main()
    {
        float r,a,b,w1,w2,w,h;
        cout<<fixed<<setprecision(2);
        cin>>r;
        Circle circle(r);
        cin>>a;
        Square square(a);
        cin>>a>>b;
        Rectangle rectangle(a,b);
        cin>>w1>>w2>>h;
        Trapezoid trapezoid(w1,w1,h);
        cin>>w>>h;
        Triangle triangle(w,h);
        Shape *pt[5]= {&circle,&square,&rectangle,&trapezoid,&triangle};
        double areas=0.0;
        for(int i=0; i<5; i++)
            areas=areas+pt[i]->area();
        cout<<"total of all areas="<<areas<<endl;
        return 0;
    }

  • 相关阅读:
    pytorch torchversion标准化数据
    pytorch 中HWC转CHW
    pytorch torchversion自带的数据集
    pytorch Dataset数据集和Dataloader迭代数据集
    pytorch Model Linear实现线性回归CUDA版本
    pytorch实现手动线性回归
    pytorch中的前项计算和反向传播
    pytorch中CUDA类型的转换
    pytorch中tensor的属性 类型转换 形状变换 转置 最大值
    LightOJ 1074 spfa判断负环
  • 原文地址:https://www.cnblogs.com/sxy201658506207/p/7586321.html
Copyright © 2011-2022 走看看