根据输入的多边形信息,相应建立一个多边形类对象或矩形类对象或等边多边形类对象,计算每一个多边形的周长并且输出其边数和周长。
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 }
构造函数和析构函数只声明不定义会报错