Problem 1408. -- 游泳池类

1408: 游泳池类

Time Limit: 1 Sec  Memory Limit: 65535 MB   64bit IO Format: %lld
Submitted: 1838  Accepted: 839
[Submit][Status][Web Board]

Description

圆形游泳池四周有圆形过道,过道外围有栅栏,过道宽度为3米。根据键入的游泳池半径、每米栅栏造价及每平方米过道的造价,计算出游泳池的造价。
按照要求完成如下任务:
(1)设计圆Circle类,包含2个私有成员数据radius(double类型)以及静态常量PI(圆周率,值为3.14159)。
    其成员函数的声明如下:
        Circle(double rr);//构造函数,用来初始化圆的半径,默认值为0,并输出信息"Circle constructor is called."
        double Circumference();//计算并返回圆的周长
        double Area();//计算并返回圆的面积
        void Set(double rr);//设置修改圆的半径,并输出信息"Circle Set function is called."
        static double GetPI();//返回静态成员数据PI的值
(2)设计Money类,用来计算游泳池的总造价。包含2个私有成员数据FencePrice(每米栅栏造价,double类型)和ConcretePrice(每平方米过道的造价,double类型)
    其成员函数的声明如下:
        Money(double f=0,double c=0);//构造函数,用来初始化成员数据,默认值均为0,并输出信息"Money constructor is called."
        void Set(double f,double c);//设置修改成员FencePrice和ConcretePrice的值,并输出信息"Money Set function is called."
        double TotalMoney(double len,double s);//计算并返回游泳池总造价,2个形参分别表示栅栏长度和过道面积
(3)按照上述要求完成设计任务,并用下面的main函数进行测试(提交时只需提交除main函数外的代码部分)
int main()
{
    cout<<"PI="<<fixed<<setprecision(5)<<Circle::GetPI()<<endl;
    Circle c1;
    Circle c2;
    Money m1;
    double r,f,c;
    int k=0;
    while(cin>>r>>f>>c)
    {
        k++;
        cout<<"Case #"<<k<<":"<<endl;
        c1.Set(r);
        c2.Set(r+3);
        m1.Set(f,c);
        cout<<fixed<<setprecision(5)<<m1.TotalMoney(c2.Circumference(),c2.Area()-c1.Area())<<endl;
    }
    return 0;
}

Input

包含多组数据,每组数据一行,包含3个实数,分别表示游泳池半径、每米栅栏造价及每平方米过道的造价

Output

对于每组测试数据,输出游泳池的总造价,保留5位小数

Sample Input

1 1 1
2 2 2

Sample Output

PI=3.14159
Circle constructor is called.
Circle constructor is called.
Money constructor is called.
Case #1:
Circle Set function is called.
Circle Set function is called.
Money Set function is called.
72.25657
Case #2:
Circle Set function is called.
Circle Set function is called.
Money Set function is called.
194.77858

[Submit][Status][Web Board]