7-10 用虚函数计算各种图形的面积 (10 分)
7-10 用虚函数计算各种图形的面积 (10 分)
定义抽象基类Shape,由它派生出五个派生类:Circle(圆形)、Square(正方形)、Rectangle( 长方形)、Trapezoid (梯形)和Triangle (三角形),用虚函数分别计算各种图形的面积,输出它们的面积和。要求用基类指针数组,每一个数组元素指向一个派生类的对象。PI=3.14159f,单精度浮点数计算。
输入格式:
输入在一行中,给出9个大于0的数,用空格分隔,分别代表圆的半径,正方形的边长,矩形的宽和高,梯形的上底、下底和高,三角形的底和高。
输出格式:
输出所有图形的面积和,小数点后保留3位有效数字。
输入样例:
12.6 3.5 4.5 8.4 2.0 4.5 3.2 4.5 8.4
输出样例:
578.109
代码如下:
#include <iostream>
using namespace std;
class Shape{public :virtual float getArea(){return 0;}
};
class Circle:public Shape{private :float radius;public :Circle(float a):radius(a){}float getArea(){return radius*radius*3.14159f;}
};
class Square:public Shape{private :float len;public :Square(float a):len(a){}float getArea(){return len*len;}
};
class Trapezoid :public Shape{private:float up,down,height;public :Trapezoid(float a,float b,float c):up(a),down(b),height(c){}float getArea(){return (up+down)*height/2;}
};
class Rectangle:public Shape{private :float width,height;public :Rectangle(float a,float b):width(a),height(b){}float getArea(){return width*height;}
};
class Triangle:public Shape{private :float height,down;public :Triangle(float a,float b):down(a),height(b){}float getArea(){return height*down/2;}
};
int main(){float a,b,c,d,e,f,g,h,i;scanf("%f %f %f %f %f %f %f %f %f",&a,&b,&c,&d,&e,&f,&g,&h,&i);Shape *array[5];//新建一个指针数组Circle c1(a);array[0]=&c1;//取内容传入Square s(b);array[1]=&s;Rectangle r(c,d);array[2]=&r;Trapezoid t(e,f,g);array[3]=&t;Triangle tr(h,i);array[4]=&tr;float sum=0;for(int j=0;j<5;j++)sum+=array[j]->getArea();//不能是array[j].getArea()否则会报错printf("%0.3f",sum);
}
这个错误需要注意。
谷雨忍住没上网查,果然自己写才是最有成就感的事情。
7-10 用虚函数计算各种图形的面积 (10 分)相关推荐
- 7-1 用虚函数计算各种图形的面积 (20分) 定义抽象基类Shape,由它派生出五个派生类:Circle(圆形)、Square(正方形)、Rectangle( 长方形)、Trapezoid (梯形)
7-1 用虚函数计算各种图形的面积 (20分) 定义抽象基类Shape,由它派生出五个派生类:Circle(圆形).Square(正方形).Rectangle( 长方形).Trapezoid (梯形) ...
- 【PTA】7-2 用虚函数计算各种图形的面积 (10 分)
定义抽象基类Shape,由它派生出五个派生类:Circle(圆形).Square(正方形).Rectangle( 长方形).Trapezoid (梯形)和Triangle (三角形),用虚函数分别计算 ...
- 7-3 用虚函数计算各种图形的面积
7-3 用虚函数计算各种图形的面积 定义抽象基类Shape,由它派生出五个派生类: Circle(圆形).Square(正方形).Rectangle( 长方形).Trapezoid (梯形)和Tria ...
- C++习题 虚函数-计算图形面积
C++习题 虚函数-计算图形面积 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 122 Solved: 86 [Submit][Status][We ...
- [YTU]_2478( C++习题 虚函数-计算图形面积)
题目描述 编写一个程序,定义抽象基类Shape,由它派生出5个派生类: Circle(圆形).Square(正方形).Rectangle(矩形).Trapezoid(梯形).Triangle(三角形) ...
- 【函数计算月报】2018年10月刊
重点新闻 阿里新任 CEO 张勇首次电视采访:云计算将是阿里未来主要业务 阿里巴巴新任 CEO 张勇在接受 CNBC 的电视采访时表示坚信未来的每项业务都将由云计算提供支持,非常乐意在新的数字时代建立 ...
- 长方形和圆形都属于几何图形,都有周长和面积,并且它们都有自己的周长和面积计算公式。使用抽象类的知识设计一个程序,可以计算不同图形的面积和周长。
[案例目标] 学会"图形的面积与周长计算程序设计"的实现思路. 独立完成"图形的面积与周长计算程序设计"的源代码编写.编译及运行. 理解和掌握面向对象的设计过程 ...
- Python函数之计算规则图形的面积
来个直接的吧,看代码; #coding=utf-8 from __future__ import unicode_literals import sys reload(sys) sys.setdefa ...
- python自定义函数求面积_Python函数之计算规则图形的面积
来个直接的吧,看代码; #coding=utf-8 from __future__ import unicode_literals import sys reload(sys) sys.setdefa ...
最新文章
- 第 3 次读 Effective Java,这 58 个技巧最值!
- unknown error 1130,unknown error 1045
- SUSE Linux SFTP服务器配置
- 【Android 逆向】Android 逆向基本概念 ( 软件运行时内存结构 | 文件与内存之间的联系 )
- (Spring)声明式事务
- [SinGuLaRiTy] 2017 百度之星程序设计大赛 初赛A
- L1-042. 日期格式化
- SAP Spartacus cxFocus单元测试Expected null to equal -1的错误分析
- mybatisplus 强制制空 空覆盖原来的字符串
- android 录音原始文件_音频采集:Android基于AudioRecord的实现
- 相似图像搜索的哈希算法思想及实现(差值哈希算法和均值哈希算法)
- 论文浅尝 | EARL: Joint Entity and Relation Linking for QA over KG
- redis rua解决库存问题_库存秒杀问题-redis解决方案- 接口限流
- 开万人 AI 大会什么感受?陆奇任大会主席 | AI ProCon 2020
- vue 写门户网站_你不得不知道的Vue项目技巧
- ExtJS 组件添加子组件
- python AES对称加密文件、解密文件
- 83 项开源视觉 SLAM 方案够你用了吗?
- 用友u9一些常用sql分享
- Acwing - 算法基础课 - 笔记(数学知识 · 二)