您的位置:首页 > 其它

多边形周长计算(继承)

2016-07-16 15:19 776 查看

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: