多边形周长计算(继承

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

  1 #include<iostream>
  2 #include<string>
  3 using namespace std;
  4 
  5 class polygon
  6 { 
  7 protected:
  8     int number;//边数,最多不超过100条边
  9 private:
 10     int side_length[100];//边长数组
 11 public:
 12     polygon(int num):number(num){}
 13     polygon(){}//构造函数根据需要重载
 14     void set_side(int s,int k)//设置边长
 15     {
 16         side_length[k]=s;
 17     }
 18     void set_number(int num)//设置边数
 19     {
 20         number=num;
 21     }
 22     int perimeter();//计算多边形周长
 23     void display();//输出多边形边数和周长
 24 };
 25 
 26 int polygon::perimeter()
 27 {
 28     int sum(0);
 29     for(int i(0);i<number;i++)
 30     {
 31         sum+=side_length[i];//所有边相加
 32     }
 33     return sum;
 34 }
 35 void polygon::display()
 36 {
 37     cout<<number<<' '<<perimeter()<<endl;//调用成员函数计算周长
 38 }
 39 
 40 
 41 class rectangle:public polygon//定义矩形类,继承多边形类
 42 {
 43 private:
 44     int height,width;
 45 public:
 46     rectangle(int h,int w,int n):polygon(n)//构造函数赋值
 47     {
 48         height=h,width=w,number=n;
 49     }
 50     int perimeter()//计算矩形的周长
 51     {
 52         int sum(0);
 53         sum=(height+width)*2;
 54         return sum;
 55     }
 56     void display()//输出结果
 57     {
 58         cout<<number<<' '<<perimeter()<<endl;//调用成员函数
 59     }
 60 };
 61 
 62 class equal_polygon:public polygon//定义正多边形类,继承多边形类
 63 {
 64 private:
 65     int side_len;
 66 public:
 67     equal_polygon(int s,int n):polygon(n)//构造函数赋值
 68     {
 69         number=n,side_len=s;
 70     }
 71     int perimeter()//计算周长
 72     {
 73         int sum(0);
 74         sum=side_len*number;
 75         return sum;
 76     }
 77     void display()//输出结果
 78     {
 79         cout<<number<<' '<<perimeter()<<endl;
 80     }
 81 };
 82 
 83 int main()
 84 {    
 85     void ispolygon(),isrectangle(),isequal_polygon();//证明函数,在主函数后定义
 86     int a,i(0);
 87     cin>>a;//输入a表示图形个数
 88     do
 89     {
 90         int k;
 91         cin>>k;
 92         switch(k)
 93         {
 94         case 0:ispolygon();break;//多边形执行ispolygon()
 95         case 1:isrectangle();break;//矩形
 96         case 2:isequal_polygon();break;//正多边形
 97         }
 98     }
 99     while(i++,--a);//do{}while(i++,--a)等价于for(int i(0);i<a;i++)
100     return 0;
101 }
102 void ispolygon()
103 {
104     int a,i(0);
105     polygon poly;
106     while(cin>>a)
107     {
108         if(a!=-1) //输入不为-1则继续输入
109         {
110             poly.set_side(a,i);//poly对象设置边长
111             i++;
112         }
113         else
114             break;//输入为-1则停止输入
115     }
116     poly.set_number(i);//设置边数
117     poly.display();//输出结果
118 }
119 void isrectangle()
120 {
121     int a,b;
122     cin>>a>>b;
123     rectangle rect(a,b,4);//对象实体化类,赋初值
124     rect.display();//输出结果
125 }
126 void isequal_polygon()
127 {
128     int s,n;
129     cin>>n>>s;
130     equal_polygon equa(s,n);//实体化类
131     equa.display();//输出结果
132 }

猜你喜欢

转载自www.cnblogs.com/wzzdeblog/p/10639902.html
今日推荐