首页 > 编程语言 >2023.5.16编程一小时打卡

2023.5.16编程一小时打卡

时间:2023-05-16 19:11:33浏览次数:48  
标签:多边形 polygon 16 int display ++ 2023.5 打卡 100

一、问题描述:

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

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为等边多边形,后面跟随两个数字为等边多边形的边数和边长。

二、解题思路:

首先根据题目要求对多边形基类进行定义,再定义保护和私有成员数据以及成员函数,再定义由其延申出来子类矩形类和等边多边行类,定义成员函数计算边长和输出的函数,最后,在主函数中输入多边形的信息,输出该多边形的边数以及周长。

三、代码实现:

  1 #include<iostream>
  2 using namespace std;
  3 class polygon
  4 {
  5 protected:
  6     int number;
  7 private:
  8     int side_length[100];
  9 public:
 10     polygon() = default;
 11     polygon(int n)
 12     {
 13         number = n;
 14         for (int i = 0; i < 100; i++)
 15         {
 16             side_length[i] = 0;
 17         }
 18     }
 19     void setlen(int *l)
 20     {
 21         for (int i = 0; i < 100; i++)
 22         {
 23             side_length[i] = *(l + i);
 24         }
 25     }
 26     int perimeter()
 27     {
 28         int sum = 0;
 29         for (int i = 0; i < 100; i++)
 30         {
 31             sum += side_length[i];
 32         }
 33         return sum;
 34     }
 35     void display()
 36     {
 37         cout << number << " " << perimeter() + 1 << endl;
 38     }
 39 };
 40 class rectangle :public polygon
 41 {
 42 protected:
 43     int height;
 44     int width;
 45 public:
 46     rectangle() = default;
 47     rectangle(int h, int w)
 48     {
 49         height = h;
 50         width = w;
 51     }
 52     int perimeter()
 53     {
 54         return 2 * (height + width);
 55     }
 56     void display()
 57     {
 58         cout << "4" << " " << perimeter() << endl;
 59     }
 60 };
 61 class equal_polygon :public polygon
 62 {
 63 protected:
 64     int side_len;
 65 public:
 66     equal_polygon() = default;
 67     equal_polygon(int n, int l)
 68     {
 69         number = n;
 70         side_len = l;
 71     }
 72     int perimeter()
 73     {
 74         return number * side_len;
 75     }
 76     void display()
 77     {
 78         cout << number << " " << perimeter() << endl;
 79     }
 80 };
 81 int main()
 82 {
 83     int n;
 84     cin >> n;
 85     int judge;
 86     for (int i = 0; i < n; i++)
 87     {
 88         cin >> judge;
 89         if (judge == 0)
 90         {
 91             int len[100];
 92             for (int i = 0; i < 100; i++)
 93             {
 94                 len[i] = 0;
 95             }
 96             int count = 0;
 97             for (int i = 0; i < 100; i++)
 98             {
 99                 cin >> len[i];
100                 if (len[i] == -1)
101                 {
102                     break;
103                 }
104                 count++;
105             }
106             polygon p(count);
107             p.setlen(len);
108             p.display();
109         }
110         if (judge == 1)
111         {
112             int h, w;
113             cin >> h >> w;
114             rectangle r(h, w);
115             r.display();
116         }
117         if (judge == 2)
118         {
119             int n;
120             int l;
121             cin >> n >> l;
122             equal_polygon e(n, l);
123             e.display();
124         }
125     }
126     return 0;
127 }

标签:多边形,polygon,16,int,display,++,2023.5,打卡,100
From: https://www.cnblogs.com/lixinyao20223933/p/17400078.html

相关文章

  • 第25天打卡
    问题: 源代码:#include<stdio.h>intmain(){inti,t=0,k;inta[3]={0};for(i=2;i<=1000;i++){k=i;while(k){a[t]=k%10;k=k/10;t++;}if(i==a[0]*a[0]*a[0]+a[1]*a[1]*a[1]+a[2]*a[2]*a[2])printf("%d",i);}printf("\n");}......
  • 编程打卡:C语言程序设计
    #include<iostream>#include<iomanip>usingnamespacestd;classMatrix{private:introw;intcolumn;int**mat=nullptr;public:Matrix(intr=1,intc=1):row(r),column(c){mat=newint*[row];f......
  • 16进制转字节数组为负数问题
    举例:B9转换成字节数组为-73或者185为什么如果是-73字节数组再转回为16进制为:0xFFFFFFB9,与原来的B9相差解析:在java里面B9 转换成二进制为:00000000000000000000000010110101Int转换为Byte的过程,也是将Int里32个bit的前24个“砍掉”,只留下最后8个bit的过程即为......
  • c++打卡练习(31)
    求两个整数的最大公因数流程图:伪代码:源代码:#include<iostream>usingnamespacestd;intmain(){ intx,y,i,k; cout<<"请输入两个整数"<<endl; cin>>x; cin>>y; if(x<y){ intt; t=x; x=y; y=t; } for(i=y;i>=1;i--){ if(x%i==0&&y%i=......
  • c++打卡练习(30)
    不重复的三位数用1234这四个数组成不重复的三位数,每个数位的数也不同,问都有谁流程图:伪代码:源代码:#include<iostream>usingnamespacestd;intmain(){ inta,b,c,d; for(a=1;a<=4;a++){ for(b=1;b<=4;b++){ for(c=1;c<=4;c++){ if(a!=b&&a!=c&&b!=c){ cout<<a&......
  • 【2023.05.16】水草缸搭建思路(阳光直射/散射)
    本文采用的是米家智能鱼缸图片环境分析鱼缸将放在院子里鞋柜上面,这个位置的话会有一个问题,那就是会有阳光直射或者散射周围没有位置可以放二氧化碳钢瓶不需要太多的打理,好养活,不需加热棒搭建思路一点点解决问题暴藻起初我的打算是放在储藏间的,家人要求放在院子里,院子里......
  • 5.16打卡
    #include<bits/stdc++.h>usingnamespacestd;intf(intn){if(n==1)return1;elsereturnf(n-1)+n;}intmain(){inta;cin>>a;cout<<f(a)<<endl;return0;} ......
  • 打卡26
    4.4将真分数变为埃及分数 算法流程图 #include<bits/stdc++.h>usingnamespacestd;constintMOD=1e9+7;voidsolve(){ longlonga,b,c; cin>>a>>b; while(1) { if(b%a)c=b/a+1; elsec=b/a,a=1; if(a==1) { printf("1/%ld\n",c); break; } e......
  • 5.16文本样式,列表样式,背景样式
    文本装饰:text-decotation:overline文本上出现上划线text-decoration:line-through文本出现删除线text-decoration:underline文本出现下划线      垂直对齐方式vertical-align:top顶部对齐vertical-align:middle中部对齐vertical:bottom底部对齐文本阴影:text=-shadow:{......
  • SIEMENS/西门子西门子S7-1200 PID温度控制程序,PID参数经过预调节和精确调节之后得出,
    SIEMENS/西门子西门子S7-1200PID温度控制程序,PID参数经过预调节和精确调节之后得出,程序采用博图V16高级版编写,适合用于不带冷却功能的模具加热生产工艺上,项目上运用已稳定工作多时,带详细注释,可进行二次开发和扩展,也可直接使用!!本程序采用博图V16编写,需要博图版本高于V16,版本低于V......