zoukankan      html  css  js  c++  java
  • 5-5 多边形周长计算(继承)

    给出下面的多边形基类框架:

    class polygon

    { protected:

       int number;//边数,最多不超过100条边
    

    private:

       int side_length[100];//边长数组
    

    public:

       polygon();//构造函数根据需要重载
       int perimeter();//计算多边形边长
       void display();//输出多边形边数和周长
    

    }

    建立一个派生类rectangle(矩形),增加以下数据成员:

      int height;
      int width;
    

    增加以下成员函数:

     rectangle类的无参和参数化构造函数
     int perimeter();//计算矩形边长
     void display();//输出多边形边数和周长
    

    建立一个派生类equal_polygon(等边多边形),增加以下数据成员:

      int side_len;
    

    增加以下成员函数:

     equal_polygon类的无参和参数化构造函数
     int perimeter();//计算等边多边形边长
     void display();//输出多边形边数和周长
    

    生成上述类并编写主函数,根据输入的多边形信息,相应建立一个多边形类对象或矩形类对象或等边多边形类对象,计算每一个多边形的周长并且输出其边数和周长。

    输入格式: 测试输入包含一个测试用例,该测试用例的第一行输入多边形的个数n,接下来n行每一行给出一个多边形的基本信息,每行的第一个数字为当前多边形的类型,0为一般多边形,后面跟随m个数字为m条边的边长,-1为一般多边形边长输入结束标志,1为矩形,后面跟随两个数字,分别为height和width,2为等边多边形,后面跟随两个数字为等边多边形的边数和边长。

    输入样例:

    3

    0 32 54 76 88 24 -1

    1 32 54

    2 3 32

    输出样例:

    5 274

    4 172

    3 96

    #include<iostream>
    using namespace std;
    class polygon{
    protected:
        int number;//边数,最多不超过100条边
    private:
        int side_length[100];//边长数组
    public:
        polygon(){};//构造函数根据需要重载
        polygon(int n):number(n){};
        polygon(int n,int x[]);//重载的构造函数 
        int perimeter();//计算多边形边长
        void display();//输出多边形边数和周长
    };
    //继承格式:class 类名 :<继承方式> <基类名>
    //派生rectangle(矩形) 
    class rectangle : public polygon{
    private:
        int height;
        int width;
    public:
        rectangle(){};//无参构造函数 
        rectangle(int a,int b):height(a),width(b){};//有参构造函数 
        int perimeter();//计算周长
        void display1();//输出边数和周长 
    };
    //派生equal_polygon(等边多边形)
    class equal_polygon : public polygon{
    private:
        int side_len;
    public:
        equal_polygon();//无参构造函数 
        equal_polygon(int n, int x):polygon(n){side_len = x;};//有参构造函数 
        void display2();
        int perimeter(){return number * side_len;}
    }; 
    //主函数 
    int main(){
        int n;
        cin>>n;
        for(int i=0;i<n;i++)
        {
            int type;
            cin>>type;
            switch(type)
            {
            case 0://一般多边形
                {
                    int n=0,lenth;
                    int x[100];
                    while(cin>>lenth)
                    {    
                        if(lenth==-1)break;
                        x[n++]=lenth;
                    }
                    polygon hello0( n, x );
                    hello0.display();
                }
                break;
            case 1://矩形
                {
                    int h,w;
                    cin>>h>>w;
                    rectangle hello1(h, w);
                    hello1.display1();
                }
                break;
            case 2://等边多边形 
                {
                    int n,x;
                    cin>>n>>x;
                    equal_polygon hello3( n, x );
                    hello3.display2();
                }
                break;
            }
        }
    
        return 0;
    }
    //equal_polygon成员函数的实现
    void equal_polygon::display2()
    {
        cout<< number <<" "<< perimeter()<< endl;    
    }
    //rectangle成员函数的实现
    void rectangle::display1()
    {
        cout<<"4 "<<2*(height + width)<<endl;
    }
    //polygon成员函数的实现 
    int polygon::perimeter()
    {
        int sum=0;
        for(int i=0;i<number;i++)
        {
            sum += side_length[i];
        }
        return sum;
    }
    void polygon::display()
    {
        cout<<number<<" "<<perimeter()<<endl;
    }
    polygon::polygon(int n, int x[])
    {
        number = n ;
        for(int i=0;i<n;i++)
        {
            side_length[i] = x[i];
        }
    }

    欢迎指教,一起学习!

    未经本人允许,请勿转载!

    谢谢!

    个人分享,欢迎指导,未经允许,请勿转载。谢谢!
  • 相关阅读:
    【转载】使用IntelliJ IDEA创建Maven聚合工程、创建resources文件夹、ssm框架整合、项目运行一体化
    【转载】使用IntelliJ IDEA 配置Maven(入门)
    谈谈JS中的高级函数
    js中typeof和instanceof用法区别
    javascript “||”、“&&”的灵活运用
    前端资源教程合集
    使用Flexible实现手淘H5页面的终端适配
    H5实现的手机摇一摇
    html5移动端页面分辨率设置及相应字体大小设置的靠谱使用方式
    优化RequireJS项目(合并与压缩)
  • 原文地址:https://www.cnblogs.com/hello-OK/p/6980464.html
Copyright © 2011-2022 走看看