输入参数,判断其形状,并计算面积,体积等C++

C++ 实现输入参数判断形状并计算面积和体积

为了实现一个程序来判断输入参数代表的形状,并计算其面积和体积,我们可以使用面向对象编程(OOP)思想。具体实现思路如下:

  1. 定义形状基类:定义一个基类 Shape,包含纯虚函数 calculateAreacalculateVolume
  2. 定义具体形状类:派生类如 CircleRectangleSphereCuboid 等,从 Shape 基类继承,并实现各自的面积和体积计算方法。
  3. 根据输入创建形状对象:根据输入参数类型和数量,创建对应的形状对象并调用计算方法。

具体实现步骤

  1. 定义基类 Shape
  2. 定义具体形状类:如 CircleRectangleSphereCuboid 等。
  3. 编写主程序:根据输入参数类型和数量,判断形状并计算面积和体积。

示例代码

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 及其派生类 CircleRectangleSphereCuboid,实现了多态,并在主程序中根据输入参数动态创建对应的形状对象。最后,调用形状对象的方法计算并输出其面积和体积。

关键字

C++,面向对象编程,形状判断,面积计算,体积计算,Shape 基类,多态,派生类,动态创建。