将 C++ 中的数字除以 3 个长整数

Dividing a number in c++ by 3 long's

我目前正在编写一个程序,用户可以在其中输入可被数字 50、20 和 10 整除的金额。

我试图让它工作的方式是,例如用户填写 180 的数量,程序将计算类似

“已使用3张50张票” “已使用1张20张票” “已使用 10 张中的一张”

然而,我什至不知道从哪里开始。很抱歉,如果这太含糊,但我们将不胜感激

我试图将我的数字放入一个数组中,但不幸的是那没有用。我也试过把它们分开,但也没用

我相信您想要的是分而治之的模式:

#include <iostream>

int main() {
    std::cout << "enter amount: ";

    if(long ui; std::cin >> ui) {
        long c50s = ui / 50; // divide
        ui -= c50s * 50;     // reduce amount

        long c20s = ui / 20; // divide
        ui -= c20s * 20;     // reduce  amount

        long c10s = ui / 10; // divide
        ui -= c10s * 10;     // reduce amount

        std::cout
            << c50s << " tickets of 50 have been used\n"
            << c20s << " tickets of 20 have been used\n"
            << c10s << " tickets of 10 have been used\n"
            << "you have " << ui << " left\n"
        ;
    } else {
        std::cerr << "invalid input\n";
    }
}

例如,如果将 180 作为输入:

3 tickets of 50 have been used
1 tickets of 20 have been used
1 tickets of 10 have been used
you have 0 left

如果你经常这样做,你可以创建一个辅助函数:

long div_and_reduce(long& input, long div) {
    long result = input / div; // divide
    input -= result * div;     // reduce
    return result;
}

int main() {
    std::cout << "enter amount: ";

    if(long ui; std::cin >> ui) {
        long c50s = div_and_reduce(ui, 50);
        long c20s = div_and_reduce(ui, 20);
        long c10s = div_and_reduce(ui, 10);
        // ...

任何时候当你在编程中遇到困难时,你都应该分解问题。有人谈论“编辑 null 程序,直到它完成预期的工作”。他们的意思是从零开始,然后解决第一步(通常是将数据输入程序)。彻底测试它。然后进入下一步。

对于您的情况,您需要收集数据。所以我会从那开始。启动程序。提示用户并询问他们想要的号码。打印出来就行了。确保有效。

然后 -- 考虑如何手动执行此操作。这将使您朝着下一步的正确方向前进。如果这太难了,那么至少定义下一个步骤并将其分解成足够小的部分,你可以弄清楚如何去做,一次一个步骤。

最终,这些步骤会变得非常小,只有一行代码。