膨胀的海绵

题目描述

现在有一块长方体状的海绵,长、宽、高分别为lwh,这块海绵由于吸水发生了膨胀,长、宽、高分别增加了dxdydz

补全下列代码中Sponge类的定义,使得程序输出符合要求。

关于输入

两行,每行三个整数。

第一行三个整数分别表示海绵的长、宽、高;

第二行三个整数分别表示海绵吸水后长、宽、高的变化量。

关于输出

共两行,每行一个整数。

第一行,输出海绵吸水前的体积;

第二行,输出海绵吸水导致的体积变化量

核心技巧

  • 本题为类的基础练习题,涉及构造函数及类的成员函数的书写。注意在成员函数中要考虑所有成员变量的修改。

参考答案

#include <iostream>
using std::cin, std::cout, std::endl;
class Sponge {
private:
    int l, w, h;
    int vol;
public:
    int volume() {
        return vol;
    }
    Sponge(int x, int y, int z): l{x}, w{y}, h{z}, vol{x * y * z} {}
    Sponge(const Sponge& s) = default;
    void expand(int dx, int dy, int dz) {
        l += dx;
        w += dy;
        h += dz;
        vol = l * w * h;
    }
};
int main() {
    int x, y, z;
    int dx, dy, dz;
    cin >> x >> y >> z;
    Sponge s1(x, y, z);
    Sponge s2{s1};
    cout << s1.volume() << endl;
    cin >> dx >> dy >> dz;
    s2.expand(dx, dy, dz);
    cout << s2.volume() - s1.volume() << endl;
}