第十七周自由练习项目——acm 抽象基类

/* 
*程序的版权和版本声明部分: 
*Copyright(c)2014,烟台大学计算机学院学生 
*All rights reserved. 
*文件名称:acm 抽象基类
*作者:刘中林 
*完成日期:2014 年 6 月 16 日 
*版本号:v1.0 
*对任务及求解方法的描述部分: 
*问题描述: 
*输入描述: 编写一个程序,声明抽象基类Shape,由它派生出3个派生类: Circle(圆形)、Rectangle(矩形)、Triangle(三角形),
           用一个函数printArea分别输出以上三者的面积(结果保留两位小数),3个图形的数据在定义对象时给定。
*程序输入:自定义
*程序输出: 三角形,长方形圆的面积
*问题分析: 
*算法设计: 
*/
#include <iostream>
#include <iomanip>
using namespace std;
const float m=3.1415926;
class Shape
{
public:
    virtual float printArea() =0;
};
class Circle:public Shape
{
public:
    Circle(float r):R(r) {}
    virtual float printArea()
    {
        return (m*R*R);
    }
protected:
    float R;
};
class Rectangle:public Shape
{
public:
    Rectangle(float l1,float l2):length1(l1),length2(l2) {}
    virtual float printArea()
    {
        return (length1*length2);
    }
protected:
    float length1,length2;
};
class Triangle:public Shape
{
public:
    Triangle(float h,float w):hight(h),width(w) {}
    virtual float printArea()
    {
        return hight*width/2;
    }
protected:
    float hight,width;
};
void printArea(Shape &shape)
{
    cout<<shape.printArea()<<endl;
}
int main()
{
    float r,a,b,w,h;
    cout<<fixed<<setprecision(2);
    cin>>r;
    Circle circle(r);
    cout<<"area of circle = ";
    printArea(circle);
    cin>>a>>b;
    Rectangle rectangle(a,b);
    cout<<"area of rectangle = ";
    printArea(rectangle);
    cin>>w>>h;
    Triangle triangle(w,h);
    cout<<"area of triangle = ";
    printArea(triangle);
    return 0;
}


*样例输出:

*心得体会:身负重伤却一身轻松。。

你可能感兴趣的:(第十七周自由练习项目——acm 抽象基类)