首页 > 其他分享 >2023/4/18

2023/4/18

时间:2023-04-18 23:34:46浏览次数:29  
标签:area 18 float class Shape b1 2023 public

7-1 用虚函数分别计算各种图形的面积 分数 20 作者 沙金 单位 石家庄铁道大学

定义抽象基类Shape,由它派生出五个派生类:Circle(圆形)、Square(正方形)、Rectangle( 长方形)、Trapezoid (梯形)和Triangle (三角形),用虚函数分别计算各种图形的面积,并求出它们的和。要求用基类指针数组。使它的每一个元素指向一个派生类的对象。PI=3.1415926

输入格式:

请在这里写输入格式。例如:输入在一行中给出9个大于0的数,用空格分隔,分别代表圆的半径,正方形的边长,矩形的宽和高,梯形的上底、下底和高,三角形的底和高。

输出格式:

请在这里描述输出格式。例如:输出所有图形的面积和,小数点后保留3位有效数字。

输入样例:

在这里给出一组输入。例如:

12.6 3.5 4.5 8.4 2.0 4.5 3.2 4.5 8.4
 

输出样例:

在这里给出相应的输出。例如:

total of all areas = 578.109

 

 

 

#include<iostream>
using namespace std;
#define PI 3.1415926              //注意这里没有分号
class Shape{
public:
virtual float area()=0;
Shape(){}
};

class Circle:public Shape
{
public:
Circle(float r1)
{
r=r1;
}
float area()
{
//float s;
s=PI*r*r;
return s;
}
private:
float r,s;
};

class Square:public Shape
{
public:
Square(float b1)
{
b=b1;
}
float area()
{
//float s;
s=b*b;
return s;
}
private:
float b,s;
};

class Rectangle:public Shape
{
public:
Rectangle(float a2,float b1)
{
w=a2;
h=b1;
}
float area()
{
//float s;
s=w*h;
return s;
}
private:
float w;
float h;
float s;

};

class Trapezoid:public Shape
{
public:
Trapezoid(float a1,float b1,float c1)
{
a=a1;
b=b1;
c=c1;
}


float area()
{
float s;
s=(a+b)*c/2.0;
return s;
}

private:
float a,b,c;

};

class Triangle:public Shape
{
public:
Triangle(float a1,float b1)
{
a=a1;
b=b1;
}
float area()
{
//loat s;
s=a*b/2.0;
return s;
}
private:
float a,b,s;
};

int main()
{
float a[9];
for(int i=0;i<9;i++)
cin>>a[i];
Shape*b[5];              //定义指针数字对象
b[0]=new Circle(a[0]);
b[1]=new Square(a[1]);
b[2]=new Rectangle(a[2],a[3]);
b[3]=new Trapezoid(a[4],a[5],a[6]);
b[4]=new Triangle(a[7],a[8]);
float sum;
sum=b[0]->area()+b[1]->area()+b[2]->area()+b[3]->area()+b[4]->area();
cout<<"total of all areas = "<<sum;
}

标签:area,18,float,class,Shape,b1,2023,public
From: https://www.cnblogs.com/wangxinyuan1108/p/17331646.html

相关文章

  • 4月18日笔记
    今天完成了空调调节温度、风速也面的设计。学会了如何添加一个小图标。我们在添加一个已经扣完图的小图标时,尽管已经扣的很干净了但是依旧会在图表外又一层灰色的背景,这时,我们只需要将背景设为透明就可以。通过android:background="#0000"这样我们就可以得到一个干净的图标。......
  • 4.18团队会议
    1.整个项目预期的任务量:32小时,目前已花的时间:20小时,还剩余的时间:12小时2.公开任务看板照片: 3.4.产品的状态   ......
  • 4月18日set与map的学习
    之前学习过string,list,vector,deque,和两种适配器queue和stack,这些都是线性表的数据结构;而今天学习的map和set他们的底层是二叉搜索树,或者平衡二叉搜索树。首先是set她没有键值对,并且不能出现重复元素,比如当插入两个一时,他只会插入一个一,所以可以用作数组去重。 比如上图当插......
  • 变编程一小时2023.4.18
    1.#include<iostream>usingnamespacestd;classShape{ public: virtualdoublearea()const=0;};classCircle:publicShape{ public: Circle(doubler):radius(r) { } virtualdoublearea()const { return3.14159*radius*radius; } protected: dou......
  • Contest 23-04-18
    #D.糖果镇思路\(m=3\)时整个路径有两个拐点,分别是\(m=1\tom=2,m=2\tom=3\)设拐点\(1\)在第\(i\)列,拐点\(2\)在第\(j\)列,则路径上的数字总和为\((front[1][i])+(front[2][j]-front[2][i-1])+(back[j])\)(\(front[i][j]\)表示第i行\(1\toj\)的前缀和,\(back[j]\)表......
  • 4月18日leetcode二叉树几种遍历方式的非递归和递归
    给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例1:二叉树的前序中序和后序遍历算法是学习二叉树必不可少的,若是使用c语言遍历前中后序还是比较繁琐的,因为要考虑遍历结果存放的序列大小问题,想要解决这个问题就得想用递归计算二叉树的节点数量,再调用递归子函数完......
  • java学习日记20230414-HashSet源码
    HashSetHashSet底层是HashMap添加一个元素时,先得到Hash值,会转化成索引值;找到存储数据表table,看这个索引位置是否存放元素;如果没有直接加入如果有,调用equals比较,如果相同放弃添加,如果不同,则添加到最后在java8中,如果一条链表的元素个数到达TREEIFY_THRESHOLD(默认是8)(table表......
  • It's all but a dream(JSOI2023 追忆)
    联赛220,队线265,哈哈。day0下午先去了华山,进行了一个喝茶???看着联赛270+的队爷们,感觉人类的悲欢并不相通。晚上试机,由于并不会用Vim,计划sublime写+code::blocks调。先配了code::blocks,然后发现并不能运行???查了下发现是xterm没装,尝试自己装一下,然后发现密码并不是123......
  • 2023/3/4[LC:Random_List_Copy]
    2023/3/4[LC:Random_List_Copy]1>心得:写“for"循环之前需要首先思考循环目的和结束条件;例如链表的遍历等;模拟仔细;2>思路首先如果是单纯复制一个普通链表:需要给前一个copy结点留一个pre指针;以便:pre->next=copy;3>解法此题有两个解法问题的关键在于如何解决指向与当前结......
  • 2023.4.18
    今天主要上了python课,我学了python,python好用,最恶心的一点就是代码风格问题,没用太多拘束,看着难受。晚上写了外包,实现了安卓pdf在线预览,通过安卓连接服务器来实现在线预览。 ......