• 多边形周长计算(继承


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

      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 }

     构造函数和析构函数只声明不定义会报错

  • 相关阅读:
    MFC 时钟 计算器 日期天数计算
    test10
    test9
    iOS 防止按钮快速点击造成多次响应的避免方法
    NSBundle读取图片 plist文件和txt文件
    按指定格式的子字符串,删除和分割字符串
    python批处理入门知识点
    命令行ffmpeg批量旋转视频
    NSData转化成十六进制字符串
    xcode里面使用Memory Leaks和Instruments检测内存泄漏
  • 原文地址:https://www.cnblogs.com/wzzdeblog/p/10639902.html
Copyright © 2020-2023  润新知