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

    1、题目:

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

    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

    2、代码:

    #include<iostream>
    using namespace std;
    class polygon
    {
    	protected:
    		int number;
    	private:
    		int side_length[100];
    	public:
    		polygon() {};
    		polygon(int num)
    		{
    			number=num;
    		}
    		void set(int len[])
    		{
    			for(int i=0; i<number; i++)
    			{
    				side_length[i]=len[i];
    			}
    
    		}
    		int perimeter()
    		{
    			int ans=0;
    			for(int i=0; i<number; i++)
    			{
    				ans+=side_length[i];
    			}
    			return ans;
    		}
    		void display()
    		{
    			cout<<number<<" "<<perimeter()<<endl;
    		}
    };
    
    class rectangle:public polygon
    {
    	private:
    		int height;
    		int width;
    	public:
    		rectangle(int num,int a,int b):polygon(num)
    		{
    			height=a;
    			width=b;
    		}
    		int perimeter1()
    		{
    			int l=0;
    			l=height+width;
    			l*=2;
    			return l;
    		}
    		void display1()
    		{
    			cout<<"4 "<<perimeter1()<<endl;
    		}
    };
    class equal_polygon:public polygon
    {
    	private:
    		int side_len;
    	public:
    		equal_polygon(int num,int side):polygon(num)
    		{
    			side_len=side;
    		}
    		int perimeter2()
    		{
    			int le=0;
    			le=side_len*number;
    			return le;
    		}
    		void display2()
    		{
    			cout<<number<<" "<<perimeter2()<<endl;
    		}
    };
    
    int main()
    {
    	int n;
    	cin>>n;
    	int ch;
    
    	for(int i=0; i<n; i++)
    	{
    		cin>>ch;
    		int o=1;
    		if(ch==0)
    		{
    			int a[100];
    			int j=0;
    			while(cin>>a[j])
    			{
    				if(a[j]==-1)
    				{
    					break;
    				}
    
    				j++;
    			}
    			polygon po(j);
    			po.set(a);
    			po.perimeter();
    			po.display();
    
    		}
    		if(ch==1)
    		{
    			int a,b;
    			cin>>a>>b;
    			rectangle re(4,a,b);
    			re.perimeter1();
    			re.display1();
    		}
    		if(ch==2)
    		{
    			int nu,side_l;
    			cin>>nu>>side_l;
    			equal_polygon equal(nu,side_l);
    			equal.perimeter2();
    			equal.display2();
    		}
    	}
    	return 0;
    }
  • 相关阅读:
    自定义“浏览文件夹”对话框
    CYABFFW:这是另一个文件夹包装器
    CYABFFW:这是另一个文件夹包装器
    ToDoList样式表:教程
    7.2.23 -一个有效而灵活的方法来掌握你的任务
    使用。net SDK编写位图按钮控件
    在MVC应用程序中使用自动程序进行CRUD操作
    imp
    openpyxl
    fabric
  • 原文地址:https://www.cnblogs.com/laixiaolian/p/5676555.html
Copyright © 2011-2022 走看看