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; }
标签:25,area,float,class,Shape,b1,2023,public From: https://www.cnblogs.com/wangxinyuan1108/p/17433143.html