使用面向对象的思想编写游泳池改造预算的程序。 一圆形游泳池,需在其周围建一圆形过道,并在其四周围上栅栏。栅栏价格为35元/米,过道造价为20元/平方米。过道宽度为3米,游泳池半径由键盘输入。要求用oop和c++计算并输出过道和栅栏的造价。
时间: 2024-11-22 10:43:06 浏览: 11
繁琐的游泳池
当我们使用面向对象的思想来编写这个游泳池改造预算的程序,我们可以创建三个主要的类:`SwimmingPool`, `Walkway`, 和 `Fence`。下面是一个简化的C++代码示例:
```cpp
#include <iostream>
#include <cmath>
class SwimmingPool {
public:
double radius;
SwimmingPool(double r) : radius(r) {}
double calculateArea() const { return M_PI * pow(radius, 2); }
};
class Walkway {
private:
double width;
public:
Walkway(double w) : width(w) {}
double cost(SwimmingPool& pool) const {
return 2 * M_PI * (pool.radius + width) * width; // 因为是圆形过道,所以面积是两倍泳池加宽的部分
}
};
class Fence {
public:
double price_per_meter;
Fence(double p) : price_per_meter(p) {}
double totalCost(SwimmingPool& pool) const {
return 2 * M_PI * pool.radius * price_per_meter; // 围绕游泳池一圈的栅栏费用
}
};
int main() {
double pool_radius;
std::cout << "请输入游泳池半径: ";
std::cin >> pool_radius;
SwimmingPool pool(pool_radius);
Walkway walkway(3);
Fence fence(35);
double walkway_cost = walkway.cost(pool);
double fence_cost = fence.totalCost(pool);
std::cout << "过道造价: " << walkway_cost << " 元\n";
std::cout << "栅栏造价: " << fence_cost << " 元\n";
return 0;
}
```
在这个程序中,我们首先创建了游泳池的实例,然后计算其面积以及过道的额外成本。接着,栅栏的总成本通过游泳池的周长来计算。最后,在`main()`函数中获取用户输入,打印出过道和栅栏各自的造价。
阅读全文