/*7-27 多边形周长计算(继承)(30 分)
给出下面的多边形基类框架:
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 <iostream>
using namespace std;
class polygon
{
protected:
int number;
private:
int side_length[100];
public:
polygon(){};
polygon(int n):number(n){}
polygon(int n,int *s):number(n)
{
for(int i = 0;i < number;i++)
side_length[i] = s[i];
}
int perimeter()
{
int sum = 0;
for(int i = 0;i < number;i++)
sum += side_length[i];
return sum;
}
void display()
{
cout << number << ' ' << perimeter() << endl;
}
};
class rectangle:public polygon
{
private:
int height;
int width;
public:
rectangle(){}
rectangle(int h,int w):height(h),width(w){}
int perimeter()
{
return height*2 + width*2;
}
void display()
{
cout << 4 << ' ' << perimeter() << endl;
}
};
class equal_polygon:public polygon
{
private:
int side_len;
public:
equal_polygon(){}
equal_polygon(int n,int l):polygon(n)
{
side_len = l;
}
int perimeter()
{
return side_len * number;
}
void display()
{
cout << number << ' ' << perimeter() << endl;
}
};
int main()
{
int n;
cin >> n;
while(n)
{
int m;
cin >> m;
switch(m)
{
case 0:
{
int a[100];
int i;
for(i = 0;i < 100;i++)
{
cin >> a[i];
if(a[i] == -1)break;
}
polygon h1(i,a);
h1.display();
}break;
case 1:
{
int a1,b1;
cin >> a1 >> b1;
rectangle h2(a1,b1);
h2.display();
}break;
case 2:
{
int a2,b2;
cin >> a2 >> b2;
equal_polygon h3(a2,b2);
h3.display();
}break;
}
n--;
}
return 0;
}
没有合适的资源?快使用搜索试试~ 我知道了~
PTA的C++试题,含题目和代码,分类清晰
共55个文件
cpp:55个
5星 · 超过95%的资源 需积分: 39 50 下载量 118 浏览量
2018-07-29
22:08:02
上传
评论 13
收藏 38KB RAR 举报
温馨提示
PTA的C++试题,含题目和代码,分类清晰
资源推荐
资源详情
资源评论
收起资源包目录
PTA_C++全部实验.rar (55个子文件)
7-20 字符串替换.cpp 667B
7-18 矩阵A乘以B.cpp 1KB
6-8 移动字母.cpp 1KB
7-27 多边形周长计算(继承).cpp 3KB
6-16 类的声明和成员函数的实现.cpp 1000B
7-12 到底是不是太胖了.cpp 1KB
6-5 使用函数求余弦函数的近似值.cpp 1KB
7-8 算术入门之加减乘除.cpp 1KB
7-25 类的定义和使用.cpp 1KB
7-32 数据的间距问题.cpp 2KB
7-16 到底有多二.cpp 928B
7-6 然后是几点.cpp 973B
7-23 类的定义final.cpp 907B
6-14 利用指针找最大值(10 分).cpp 658B
7-5 逆序的三位数.cpp 461B
7-7 计算火车运行时间.cpp 753B
7-13 奇偶分家.cpp 556B
7-3 整数四则运算.cpp 641B
7-24 类的定义和使用.cpp 682B
7-22 找鞍点.cpp 1KB
6-13 指定位置输出字符串.cpp 2KB
7-4 厘米换算英尺英寸.cpp 598B
7-28 图书音像出租管理.cpp 3KB
7-10 比较大小.cpp 486B
7-9 计算分段函数[1].cpp 512B
7-17 求整数序列中出现次数最多的数.cpp 819B
6-3 递归求Fabonacci数列.cpp 607B
6-23 派生类使用基类的成员函数.cpp 2KB
6-22 狗的继承.cpp 1KB
7-15 查验身份证.cpp 1KB
7-1 后天.cpp 472B
6-20 Tree类的构造函数和成员函数.cpp 968B
6-6 递归计算P函数.cpp 850B
7-31.cpp 2KB
6-12 判断回文字符串.cpp 1KB
7-2 A乘以B.cpp 417B
6-11 使用函数实现字符串部分复制.cpp 1KB
6-15 查找子串.cpp 1KB
6-9 拆分实数的整数与小数部分.cpp 867B
6-17 使用类计算矩形的面积.cpp 2KB
7-30 复数的比较.cpp 1KB
6-4 统计各位数字之和是5的数.cpp 2KB
6-10 在数组中查找指定元素.cpp 1KB
6-1 简单求和.cpp 692B
6-19 类的声明和成员函数的实现--this指针.cpp 2KB
7-19 找出不是两个数组共有的元素.cpp 1KB
7-11 两个数的简单计算器.cpp 884B
6-2 使用函数求素数和(20 分).cpp 2KB
7-29 饮料的价格.cpp 3KB
6-7 统计某类完全平方数.cpp 2KB
6-18 Point类的声明和实现.cpp 931B
6-21 体育俱乐部I(构造函数).cpp 2KB
7-14 找完数.cpp 1KB
7-21 交换最小值和最大值.cpp 972B
7-26 学生CPP成绩计算.cpp 2KB
共 55 条
- 1
资源评论
- 巴蜀明月2023-07-29题目分类清晰,让人能够快速找到自己想要解答的问题,非常方便。
- Jaihwoe2023-07-29这个文件提供了丰富的PTA C试题和相应的代码,非常适合想要练习及测试的人。
- chenbtravel2023-07-29代码示例清晰易懂,帮助了我解决了一些困惑,非常感谢分享者的付出。
- 江水流春去2023-07-29文件内容简洁实用,对于学习C语言的人来说,是一个很实用的学习资料。
- 张匡龙2023-07-29这个文件的提供者总结了PTA C试题的精华,对于我这种初学者来说,是非常有帮助的学习资源。
modao233
- 粉丝: 10
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功