输入参数,判断其形状,并计算面积,体积等C++
C++ 实现输入参数判断形状并计算面积和体积
为了实现一个程序来判断输入参数代表的形状,并计算其面积和体积,我们可以使用面向对象编程(OOP)思想。具体实现思路如下:
- 定义形状基类:定义一个基类
Shape
,包含纯虚函数calculateArea
和calculateVolume
。 - 定义具体形状类:派生类如
Circle
、Rectangle
、Sphere
、Cuboid
等,从Shape
基类继承,并实现各自的面积和体积计算方法。 - 根据输入创建形状对象:根据输入参数类型和数量,创建对应的形状对象并调用计算方法。
具体实现步骤
- 定义基类 Shape
- 定义具体形状类:如
Circle
、Rectangle
、Sphere
、Cuboid
等。 - 编写主程序:根据输入参数类型和数量,判断形状并计算面积和体积。
示例代码
cpp#include <iostream>
#include <cmath>
#include <memory>
// 定义基类 Shape
class Shape {
public:
virtual double calculateArea() const = 0;
virtual double calculateVolume() const = 0;
virtual ~Shape() = default;
};
// 定义 Circle 类
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double calculateArea() const override {
return M_PI * radius * radius;
}
double calculateVolume() const override {
return 0; // 圆形没有体积
}
};
// 定义 Rectangle 类
class Rectangle : public Shape {
private:
double length, width;
public:
Rectangle(double l, double w) : length(l), width(w) {}
double calculateArea() const override {
return length * width;
}
double calculateVolume() const override {
return 0; // 矩形没有体积
}
};
// 定义 Sphere 类
class Sphere : public Shape {
private:
double radius;
public:
Sphere(double r) : radius(r) {}
double calculateArea() const override {
return 4 * M_PI * radius * radius;
}
double calculateVolume() const override {
return (4.0 / 3.0) * M_PI * std::pow(radius, 3);
}
};
// 定义 Cuboid 类
class Cuboid : public Shape {
private:
double length, width, height;
public:
Cuboid(double l, double w, double h) : length(l), width(w), height(h) {}
double calculateArea() const override {
return 2 * (length * width + length * height + width * height);
}
double calculateVolume() const override {
return length * width * height;
}
};
int main() {
double param1, param2, param3;
std::cout << "输入形状参数(一个或多个,以空格分隔): ";
std::cin >> param1;
std::unique_ptr<Shape> shape;
// 判断输入参数数量和类型
if (std::cin.peek() == '\n') {
// 输入一个参数
shape = std::make_unique<Circle>(param1);
} else {
std::cin >> param2;
if (std::cin.peek() == '\n') {
// 输入两个参数
shape = std::make_unique<Rectangle>(param1, param2);
} else {
std::cin >> param3;
// 输入三个参数
shape = std::make_unique<Cuboid>(param1, param2, param3);
}
}
std::cout << "面积: " << shape->calculateArea() << std::endl;
std::cout << "体积: " << shape->calculateVolume() << std::endl;
return 0;
}
总结
本文介绍了如何使用 C++ 实现一个程序来判断输入参数代表的形状,并计算其面积和体积。通过定义基类 Shape
及其派生类 Circle
、Rectangle
、Sphere
和 Cuboid
,实现了多态,并在主程序中根据输入参数动态创建对应的形状对象。最后,调用形状对象的方法计算并输出其面积和体积。
关键字
C++,面向对象编程,形状判断,面积计算,体积计算,Shape 基类,多态,派生类,动态创建。