首页 > 其他分享 >虚函数计算各种图形面积

虚函数计算各种图形面积

时间:2023-04-21 11:26:29浏览次数:30  
标签:const 函数 area double height Shape 计算 图形 public

定义抽象基类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
  1 #include<iostream>
  2 using namespace std;
  3 
  4 class Shape
  5 {
  6  public:
  7   virtual double area() const=0;
  8 };
  9 
 10 class Circle:public Shape
 11 {
 12  public:
 13   Circle(double r):radius(r)
 14   {
 15    
 16   }
 17   virtual double area() const
 18   {
 19    return 3.14159*radius*radius;
 20   }
 21  protected:
 22   double radius;
 23 };
 24 
 25 class Square:public Shape
 26 {
 27  public:
 28   Square(double s):side(s)
 29   {
 30    
 31   }
 32   virtual double area() const
 33   {
 34    return side*side;
 35   }
 36  protected:
 37   double side;
 38 };
 39 
 40 class Rectangle:public Shape
 41 {
 42  public:
 43   Rectangle(double w,double h):width(w),height(h)
 44   {
 45    
 46   }
 47   virtual double area() const
 48   {
 49    return width*height;
 50   }
 51  protected:
 52   double width,height; 
 53 };
 54 
 55 class Trapezoid:public Shape
 56 {
 57  public:
 58   Trapezoid(double t,double b,double h):top(t),bottom(b),height(h)
 59   {
 60    
 61   }
 62   virtual double area() const
 63   {
 64    return 0.5*(top+bottom)*height;
 65   }
 66  protected:
 67   double top,bottom,height;
 68   
 69 };
 70 
 71 class Triangle:public Shape
 72 {
 73  public:
 74   Triangle(double w,double h):width(w),height(h)
 75   {
 76    
 77   }
 78   virtual double area() const
 79   {
 80    return 0.5*width*height;
 81   }
 82  protected:
 83   double width,height;
 84 };
 85 
 86 int main()
 87 {
 88  Circle circle(12.6);
 89  Square square(3.5);
 90  Rectangle rectangle(4.5,8.4);
 91  Trapezoid trapezoid(2.0,4.5,3.2);
 92  Triangle triangle(4.5,8.4);
 93  Shape *pt[5]=
 94  {
 95   &circle,&square,&rectangle,&trapezoid,&triangle
 96  };
 97  double areas=0.0;
 98  for(int i=0;i<5;i++)
 99  {
100   areas=areas+pt[i]->area(); 
101  }
102  cout<<"total of all areas = "<<areas<<endl;
103  return 0;
104 }

 

标签:const,函数,area,double,height,Shape,计算,图形,public
From: https://www.cnblogs.com/liubingyu/p/17339698.html

相关文章

  • 机器学习的一些基本概念(函数/标准化/梯度下降/正则化)
    基本概念各种函数损失函数(LossFunction)度量单样本****或者一个批次的样本预测的错误程度,损失函数越小,模型就越好。常用的损失函数包括:0-1损失函数、平方损失函数、绝对损失函数、对数损失函数等代价函数(CostFunction)度量全部样本集的平均误差。常用的代价函数包括均方误差、......
  • scapy函数介绍
    1、读取报文>>>packets=rdpcap("d.pcap")2、查看原始数据>>>raw(packets[0])b'\x00\x16>3\x02d\x00\x16>\\\xf2\xa3\x08\x00E\x00\x00(\x00\x01\x00\x00@\x063\x18\xc0\xa8\x05;\xb5*\xcc\xa9$\xfc\x01\x......
  • Python | isinstance函数的使用
    isinstance是一个Python内置函数,用于检查一个对象是否是指定类或其子类的实例。isinstance(obj,cls)返回一个布尔值,表示obj是否是cls或其子类的实例。类似type()。isinstance()与type()区别:type()不会认为子类是一种父类类型,不考虑继承关系。isinstance()会认......
  • 7.数组动态创建和函数
    动态创建函数动态函数一维数组动态赋值int*data=newint[3];//动态分配地址for(inti=0;i<3;i++){data[i]=1;cout<<data[i]<<"";}delete[]data;//释放分配的·地址 二维数组动态分配地址int**d......
  • 计算文件大小
    functionGetFileSize(constFileName:string):DWORD;varf:integer;beginf:=FileOpen(FileName,fmOpenRead);tryResult:=Windows.GetFileSize(f,nil);finallyFileClose(f);end;ifResult=$FFFFFFFFthenResult:=0;end;funct......
  • 增加一个成员函数,计算加n秒的时间
    设置Cmytime类。具有三个成员函数Show()int Set(inth,intm,ints)对于Set函数的要求,   1、对于非法赋值不给予执行,三个参数合法范围是:0<=h<=23, 0<=m,s<=59。如何参数非法,本次Set函数不改变原有值。  2、赋值成功,返回1,否则返回0。void AddOneSecond();实......
  • 增加一个成员函数,计算加一秒的时间
    设置Cmytime类。具有三个成员函数Show()int Set(inth,intm,ints)对于Set函数的要求,   1、对于非法赋值不给予执行,三个参数合法范围是:0<=h<=23, 0<=m,s<=59。如何参数非法,本次Set函数不改变原有值。  2、赋值成功,返回1,否则返回0。void AddOneSecond();实......
  • oracle数字类函数
    Oracle数据库中所有的数字类函数:ABS:返回指定数值的绝对值ACOS:返回指定角度的反余弦值ASIN:返回指定角度的反正弦值ATAN:返回指定数字的反正切值ATAN2:返回两个数值的反正切值CEIL:返回大于或等于指定数字的最小整数(向上取整)COS:返回指定角度的余弦值COSH:返回......
  • oracle字符类函数
    Oracle数据库中所有的字符类函数:ASCII:返回某个字符的ASCII码值ASCIISTR:返回字符的ASCII码值的字符串表示CHR:返回指定ASCII码对应的字符CONCAT:连接两个字符串CONVERT:将一个字符集转换成另一个字符集INITCAP:将字符串每个单词首字母大写INSTR:返回字符串中子串的......
  • oracle日期和时间类函数
    Oracle中所有的日期和时间类函数:SYSDATE:返回当前日期和时间CURRENT_DATE:返回当前日期CURRENT_TIMESTAMP:返回当前的日期和时间戳LOCALTIMESTAMP:返回当前时间戳TIMESTAMPADD:在日期上增加一定的数量TIMESTAMPDIFF:计算两个日期之间的时间差EXTRACT:从日期时间......