将 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 程序,直到它完成预期的工作”。他们的意思是从零开始,然后解决第一步(通常是将数据输入程序)。彻底测试它。然后进入下一步。
对于您的情况,您需要收集数据。所以我会从那开始。启动程序。提示用户并询问他们想要的号码。打印出来就行了。确保有效。
然后 -- 考虑如何手动执行此操作。这将使您朝着下一步的正确方向前进。如果这太难了,那么至少定义下一个步骤并将其分解成足够小的部分,你可以弄清楚如何去做,一次一个步骤。
最终,这些步骤会变得非常小,只有一行代码。
我目前正在编写一个程序,用户可以在其中输入可被数字 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 程序,直到它完成预期的工作”。他们的意思是从零开始,然后解决第一步(通常是将数据输入程序)。彻底测试它。然后进入下一步。
对于您的情况,您需要收集数据。所以我会从那开始。启动程序。提示用户并询问他们想要的号码。打印出来就行了。确保有效。
然后 -- 考虑如何手动执行此操作。这将使您朝着下一步的正确方向前进。如果这太难了,那么至少定义下一个步骤并将其分解成足够小的部分,你可以弄清楚如何去做,一次一个步骤。
最终,这些步骤会变得非常小,只有一行代码。