01./*
02.* 程序的版权和版本声明部分:
03.* Copyright (c) 2011, 烟台大学计算机学院
04.* All rights reserved.
05.* 文件名称:test.cpp
06.* 作 者:刘芳
07.* 完成日期:201 4年5 月29 日
08.* 版 本 号:v1.0
09.* 对任务及求解方法的描述部分:
10.* 输入描述:无
11.* 问题描述: 基类是纯虚函数,输入圆,正方形,长方形,三角形,梯形对应的值
12.* 程序输出:他们面积总和
13.* 问题分析:略
14.* 算法设计:略
15.*/
#include <iostream>
#include<iomanip>
using namespace std;
class Shape
{
public:
virtual float area()const=0;
};
class Circle:public Shape//圆
{
public:
virtual float area()const;
Circle(double);
float getR()
{
return r;
}
private:
double r;
};
Circle::Circle(double R)
{
r=R;
}
float Circle::area()const
{
float s;
s=3.14159*r*r;
return s;
}
class Square:public Shape//正方形
{
public:
virtual float area()const;
Square(double);
float getA()
{
return a;
}
private:
double a;
};
Square:: Square(double a1)
{
a=a1;
}
float Square::area()const
{
float s;
s=a*a;
return s;
}
class Rectangle:public Shape//长方形
{
public:
virtual float area()const;
Rectangle(float,float);
float getX()
{
return x;
}
float getY()
{
return y;
}
private:
float x;
float y;
};
Rectangle::Rectangle(float a,float b)
{
x=a;
y=b;
}
float Rectangle::area()const
{
float s;
s=x*y;
return s;
}
class Triangle:public Shape//三角形
{
public:
virtual float area()const;
Triangle(float,float);
float getA()
{
return a;
}
float getH()
{
return h;
}
private:
float a;
float h;
};
Triangle::Triangle(float x,float y)
{
a=x;
h=y;
}
float Triangle::area()const
{
float s;
s=1.0/2*(h*a);
return s;
}
class Trapezoid:public Shape//梯形
{
public:
virtual float area()const;
Trapezoid(float,float,float);
float getA()
{
return a;
}
float getB()
{
return b;
}
float getH()
{
return h;
}
private:
float a;
float b;
float h;
};
Trapezoid::Trapezoid(float w,float m,float n)
{
a=w;
b=m;
h=n;
}
float Trapezoid::area()const
{
float s;
s=1.0/2*(a+b)*h;
return s;
}
int main()
{
float r,a,b,w1,w2,w,h;
cout<<fixed<<setprecision(2);
cout<<"圆的半径:"<<endl;
cin>>r;
Circle circle(r);
cout<<"输入正方形的边长:"<<endl;
cin>>a;
Square square(a);
cout<<"请输入长方形的长,宽:"<<endl;
cin>>a>>b;
Rectangle rectangle(a,b);
cout<<"请输入梯形的上,下底,高:"<<endl;
cin>>w1>>w2>>h;
Trapezoid trapezoid(w1,w1,h);
cout<<"请输入三角形的底,高:"<<endl;
cin>>w>>h;
Triangle triangle(w,h);
Shape *pt[5]= {&circle,&square,&rectangle,&trapezoid,&triangle};
double areas=0.0;
for(int i=0; i<5; i++)
areas=areas+pt[i]->area();
cout<<"total of all areas="<<areas<<endl;
return 0;
}