【问题描述】已知一圆形游泳池,现在需在其周围建一圆形过道,并在其四周围上栅栏。栅栏价格为35元/米,过道造价为20元/平方米。过道宽度为3米游泳池半径由键盘输要求编程计算并输出过道和栅栏的造价。 设计该程序时需要达到以下要求: (1)根据理解,自行定义Circle类来实现相关的数据存储以及功能,访问控制性、名称以及参数自行定义。可查看后面程序说明 (2)要求定义一个用于计算过道造价的函数,该函数的参数指定为指向对象的指针类型,函数返回值为double类型的过道造价。该函数实现时要求动态生成一圆对象,实道造价的计算
时间: 2024-02-24 22:53:28 浏览: 160
以下是根据要求编写的程序:
```c++
#include <iostream>
#include <cmath>
using namespace std;
const double PI = 3.14159265358979323846;
const double FENCE_PRICE = 35.0; // 栅栏价格(元/米)
const double PATH_PRICE = 20.0; // 过道价格(元/平方米)
// 圆类
class Circle {
private:
double radius; // 半径
public:
Circle(double r = 0) {
radius = r;
}
double getRadius() const {
return radius;
}
double getArea() const {
return PI * radius * radius;
}
};
// 计算过道造价的函数
double calcPathPrice(const Circle* pool) {
double r1 = pool->getRadius(); // 游泳池半径
double r2 = r1 + 3.0; // 过道半径
Circle* path = new Circle(r2);
double area = path->getArea() - pool->getArea(); // 过道面积
double price = area * PATH_PRICE; // 过道造价
delete path;
return price;
}
int main() {
double r;
cout << "请输入游泳池半径:";
cin >> r;
Circle* pool = new Circle(r);
double fencePrice = 2 * pool->getRadius() * PI * FENCE_PRICE; // 栅栏造价
double pathPrice = calcPathPrice(pool); // 过道造价
double total = fencePrice + pathPrice; // 总造价
cout << "栅栏造价:" << fencePrice << "元" << endl;
cout << "过道造价:" << pathPrice << "元" << endl;
cout << "总造价:" << total << "元" << endl;
delete pool;
return 0;
}
```
程序说明:
1. 定义了一个Circle类,用于存储圆形的半径和计算圆形的面积。
2. 定义了一个函数calcPathPrice,用于计算过道的造价。该函数接受一个指向Circle对象的指针作为参数,并返回过道的造价。在该函数内部,首先动态生成一个圆形对象,其半径为游泳池半径加上3米(即过道宽度)。然后计算过道的面积,通过过道面积和过道价格计算过道造价。最后释放动态生成的圆形对象。
3. 在主函数中,首先输入游泳池半径,然后动态生成一个Circle对象。通过游泳池半径和圆周率计算栅栏的长度,进而计算栅栏的造价。然后调用calcPathPrice函数计算过道的造价。最后输出栅栏造价、过道造价和总造价,并释放动态生成的Circle对象。
阅读全文