7-8 多边形周长计算(继承) (10 分)

7-8 多边形周长计算(继承) (10 分)

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

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
#include
#include 
 
using namespace std;
class polygon

{ protected:

   int number;//边数,最多不超过100条边
private:
   int side_length[100];//边长数组
public:
	polygon(){
	};
   polygon(int num){
   number=num;
   };      
   void set(int a,int b){
   	side_length[a]=b;
   }
  //构造函数根据需要重载
   int perimeter(){
   	int a=0;
      for(int i=0;iperimeter());}//输出多边形边数和周长
};
class rectangle:public polygon{
	  int height;
  int width;
  public :
   rectangle(){};
    rectangle(int hei,int wid){
	height=hei;width=wid;}
	int perimeter(){
	  return 2*(width+height);
	}//计算矩形边长
 void display(){
     printf("4 %d\n",2*(width+height));
 }//输出多边形边数和周长
	
   
};
class equal_polygon:public polygon{
	  int side_len;
	  public :
	  	  equal_polygon(){
			};
			 equal_polygon(int num,int side){
			 	side_len=side;
			 	number=num;
			 }
 int perimeter(){
 	return number*side_len;
 }//计算等边多边形边长
 void display(){
 printf("%d %d\n",number,number*side_len);}//输出多边形边数和周长
};
int main()
{   
int n;
scanf("%d",&n);
int a;int array[100];
for(int i=0;i

一开始过不去的原因是在for循环的计数器选择了i而不是count导致变量重名,以后要多多注意。 

 7-8 多边形周长计算(继承) (10 分)_第1张图片

你可能感兴趣的:(C++,PTA,c++)