十三周任务三 Sharp Circle Rectangle Triangle

来源:互联网 发布:三菱编程器型号 编辑:程序博客网 时间:2024/05/16 05:16


/* (程序头部注释开始)* 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved.* 文件名称:                              * 作    者:   姜雅明                              * 完成日期:   2012    年   05    月    20    日* 版 本 号:          * 对任务及求解方法的描述部分* 输入描述: * 问题描述: * 程序输出: * 程序头部的注释结束*/#include <iostream> using namespace std;  class Shape  {  public:  virtual double area() =0;           };  class Circle:public Shape  {  protected:  double radius;    public:  Circle(double r):radius(r){}                                     virtual double area() {return 3.14159 * radius * radius;};                                            };  class Rectangle:public Shape  {  protected:  double width,height;  public:  Rectangle(double w,double h):width(w),height(h){}               virtual double area() {return width * height;}             };  class Triangle:public Shape  { protected:  double width,height;          public:  Triangle(double w,double h):width(w), height(h){}                virtual double area() {return 0.5 * width * height;}                                            };  int main()  {  Circle c1(12.6),c2(4.9);                                              //建立Circle类对象c1,c2,参数为圆半径  Rectangle r1(4.5,8.4),r2(5.0,2.5);                                    //建立Rectangle类对象r1,r2,参数为矩形长、宽  Triangle t1(4.5,8.4),t2(3.4,2.8);                                     //建立Triangle类对象t1,t2,参数为三角形底边长与高  Shape *pt[6]={&c1,&c2,&r1,&r2,&t1,&t2};                               //定义基类指针数组pt,使它每一个元素指向一个派生类对象  double areas=0.0;                                                //areas为总面积  for(int i=0;i<6;i++)  {  areas=areas+pt[i]->area();  }  cout<<"totol of all areas="<<areas<<endl;   //输出总面积  system("pause");  return 0;  }