C++习题 虚函数-计算图形面积

C++习题 虚函数-计算图形面积

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 122  Solved: 86
[Submit][Status][Web Board]

Description

编写一个程序,定义抽象基类Shape,由它派生出5个派生类: Circle(圆形)、Square(正方形)、Rectangle(矩形)、Trapezoid(梯形)、Triangle(三角形)。
用虚函数分别计算几种图形面积,并求它们之和。
要求用基类指针数组,使它每个元素指向一个派生类对象。 

Input

圆的半径
正方形的边长
矩形的边长
梯形的上底和下底,高
三角形的底与高

Output

全部图形面积之和(结果保留两位小数)

Sample Input

12.63.54.5 8.42.0 4.5 3.24.5 8.4

Sample Output

total of all areas=574.11
#include <iostream>
#include<iomanip>
using namespace std;
class Shape
{public:virtual float area()=0;private:};
class Circle:public Shape
{
public:Circle(float s){r=s;}
float area(){return (3.1415926*r*r);}private:float r;};class Square:public Shape
{
public:Square (float s){a=s;}float area() { return (a*a); }
private:float a;
};
class Rectangle :public Shape
{
public:Rectangle (float s,float d){a=s;b=d;}float area() { return (a*b);}
private:float a,b;
};
class Trapezoid:public Shape
{
public:Trapezoid (float s,float d,float ss){w1=s;w2=d;h=ss;}float area() { return ((w1+w2)*h/2); }
private:float w1,w2,h;
};
class Triangle:public Shape
{
public:Triangle (float s,float d){w=s;h=d;}float area() { return (w*h/2); }
private:float w,h;
};int main(){float r,a,b,w1,w2,w,h;cout<<fixed<<setprecision(2);cin>>r;Circle circle(r);cin>>a;Square square(a);cin>>a>>b;Rectangle rectangle(a,b);cin>>w1>>w2>>h;Trapezoid trapezoid(w1,w1,h);cin>>w>>h;Triangle triangle(w,h);Shape *pt[5]= {&circle,&square,&rectangle,&trapezoid,&triangle};double areas=0.0;for(int i=0; i<5; i++)areas=areas+pt[i]->area();cout<<"total of all areas="<<areas<<endl;return 0;}


转载于:https://www.cnblogs.com/jzdwajue/p/6953604.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/269235.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

〈理解〉OSI七层

第7层<Application应用层>—直接对应用程序提供服务&#xff0c;应用程序可以变化&#xff0c;但要包括电子消息传输第6层<Presentation表示层>—格式化数据&#xff0c;以便为应用程序提供通用接口。这可以包括加密服务、解压第5层<Session会话层>—在两个节…

Ubuntu 开机 Firmware Bug , Bios corrupted

因为Windows 死机&#xff0c;断电后 vmware 虚拟机开机后、进入ubuntu 出现linux启动选项 进入后界面无法打开 一直是命令输入行 解决方法 输入命令&#xff1a;fsck -y /dev/sda1 等待完成修复后再输入 exit

Vboxmanage改动uuid报错的解决的方法

我的环境&#xff1a; Virtualbox 4.3.10 r93012 操作系统&#xff1a;win7 问题&#xff1a;Virtualbox在使用拷贝的虚拟盘时会提示uuid冲突&#xff1a; Because a hard disk with uuid ‘’ already exists. 依照网上的说法&#xff0c;执行VBoxManage改动uuid报错&#xff…

SQL Server连接中的常见错误

SQL Server连接中的常见错误:一."SQL Server 不存在或访问被拒绝"这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多.一般说来,有以下几种可能性:1,SQL Server名称或IP地址拼写有误2,服务器端网络配置有误3,客户端网络配置有误要解决这个问题,我们一般要遵…

QT源码交叉编译

交叉编译QT 源码 板子&#xff1a;全志 V3S , arm32位cpu ubuntu 虚拟机搭建好交叉编译链环境&#xff0c;添加环境变量 ok3399ubuntu:~$ echo $PATH /opt/OK3399-linux-release/host/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lo…

JQ表单序列化变成 对象

JQ表单序列化变成 对象 function serializeObject(form) { var o {}; $.each(form.serializeArray(), function(index) { if (o[this[name]]) { o[this[name]] o[this[name]] ";" this[value]; } else { o[this[name]] this[value]; } }); return o;} 、、、、、…

即将从TechReady5归来

TechReady是微软内部面向Services、DPE、TS等部门的技术会议&#xff0c;每年两次&#xff0c;这次是第5次。听了几天课&#xff0c;虽说很多内容有点旧&#xff0c;但其中还是有不少好的东东&#xff0c;呵呵。 TechReady5的第2天&#xff0c;Bill Gates给了一节General Sessi…

linux交叉编译无法识别gcc编译器

使用 arm gcc 编译时候 32位编译器无法识别 原因没有安装下面两个库导致我当时编译 qt 源码时报没有 compiler 在 编译工具存放文件夹下 查看编译器版本也无法识别编译器 64位ubunutu安装 32 位依赖库后即可 sudo apt-get install lib32ncurses5 lib32z1sudo apt-getinstall …

安装redis出现cc adlist.o /bin/sh:1:cc:not found

安装redis时 提示执行make命令时&#xff0c; 提示 CC adlist.o /bin/sh: cc: 未找到命令 问题原因&#xff1a;这是由于系统没有安装gcc环境&#xff0c;因此在进行编译时才会出现上面提示&#xff0c;当安装好gcc后再进行编译时&#xff0c;上面错误提示将消失。 解决方法&am…

理想的 ASP.NET AJAX (Part 1 - Client Centric)

怎样的AJAX才算是理想&#xff1f; 要说什么是理想的ASP.NET AJAX&#xff0c;就要先说说什么是理想的AJAX。事实上AJAX最不理想的地方在于search engine friendly以及bookmarkable&#xff0c;这两个问题有一定的相似性&#xff0c;要解决并不难&#xff0c;只是每一个系统中实…

QT 发布程序到开发板

设置 IP 与开发板同一网段 设置一个device 设置开发板平台的 kit , 选择 device 设备为刚刚设置好的 pro 文件加入代码设置远程发布安装路径 INSTALLS target target.path /root/home/ftp5. 重新qmake工程完成设置 6. 是程序可以在板上运行&#xff0c; 之前这里一直…

Hibernate(十):n-n关联关系

背景&#xff1a;在实际开发中我们会遇到表的多对多关联&#xff0c;比如&#xff1a;一篇博客文章&#xff0c;它可以同时属于JAVA分类、Hibernate分类。 因此&#xff0c;我们在hibernate的学习文章系列中&#xff0c;需要学会如何使用hibernate来实现多对多的关联关系。 在h…

扫描器scanner的源代码

扫描器scanner的源代码&#xff0c;应该说是比较粗糙的 .#define szSign "500 13\r\nServer: Microsoft-IIS/5.0"//根据此标志来检查目标是否有漏洞 其实就是个取Banner。我那他改造了一下。有空检查一下效果如何&#xff1a;&#xff09; #include <stdio.h>…

QT 开发基于高德智感 ITA SDK 的红外模组应用

QT 开发基于高德智感 ITA SDK 的红外模组应用 1.把创建的工程 .pro 文件打开&#xff0c;在文本编辑区域点击鼠标右键弹出操作选项框&#xff0c; 点击 “Add Libraray…” 2.选择“External Libraray ”, 点击 “Next” 3.在弹出框点击选择Linux Platform, Library Type 选…

webpack第一节(4)

每次修改了代码都需要重新手动打包&#xff0c;这样很麻烦&#xff0c;不符合webpack的初衷&#xff0c;我们查看webpack帮助看看有没有可以自动运行的方法 输入 webpack -help 可以发现有个 --watch方法 它的解释是监听系统文件改变 我们试一试 现在监听进程一直在运行 我们改…

T.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.Reflectio

There is no getter for property named * in class java.lang.String&#xff0c;此错误之所以出现&#xff0c;是因为mybatis在对parameterType"String"的sql语句做了限制&#xff0c;假如你使用<when test"username ! null">这样的条件判断时&…

【新媒体】现阶段新闻聚合的玩法

郑昀 20070824<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />新浪科技主编曹增辉的《新闻聚合的门槛》论及了玩聚所处的一些大环境之先天不足&#xff0c;主要是环境门槛、细分市场的门槛&#xff0c;以及入口问题。我的理解呢…