从用户输入中计算可能的最少可能的硬币
Calculating the fewest possible coins possible from user input
相当新鲜的编码器,它正在学习创建一个程序,该程序将从0到99之间的任何给定的Cent输入中输出最少的硬币。我不需要为此代码添加任何限制这就是为什么您看不到0和99之间的任何限制。
这是我所拥有的,但是我似乎无法弄清楚如何正确使用模量来携带上一个计算中的剩余号码。
我感谢您提供的任何建议!我认为我非常接近,但是坐落在具有%模量的精神墙上。我知道我可以使用长算术计算上一个数字,但是我想弄清楚如何使其使用%修饰符使其短。
#include <iostream>
using namespace std;
int main()
{
int cents;
const int quarter = 25;
const int dime = 10;
const int nickel = 5;
const int penny = 1;
// Get the amount of cents
cout << "Please enter an amount in cents less than a dollar." << endl;
cin >> cents;
// Calculate how many of each coin you can get from cent input
int Q = cents % quarter;
int D = Q % dime;
int N = D % nickel;
int P = N % penny;
// Display the coins you can get from cent input
cout << "Your change will be:" << endl;
cout << "Q: " << Q << endl;
cout << "D: " << D << endl;
cout << "N: " << N << endl;
cout << "P: " << P << endl;
return 0;
}
%
返回分区的其余部分,而不是圆形图。因此,它分配给Q
的其余部分。ID建议您首先计算X
类型硬币的数量,然后将其余部分传递到下一个计算。像
int Q = cents / quarter;
int D = (cents%quarter) / dime;
等等
这是使用std::div
和C 17结构化绑定的另一种解决方案:
#include <iostream>
#include <string>
#include <cstdlib>
#include <utility>
#include <vector>
int main()
{
std::vector<std::pair<std::string, int>> coins {
{"quarter", 25},
{"dime", 10},
{"nickel", 5},
{"penny", 1} };
std::cout << "Please enter an amount in cents less than a dollar.n";
int cents;
std::cin >> cents;
std::cout << "Your change will be:n";
for(const auto& [coin_name, value] : coins) {
auto[coin_count, remainder] = std::div(cents, value);
cents = remainder;
std::cout << coin_name << "t: " << coin_count << 'n';
}
}
我不太了解您想要的是什么
int cointypes[4]={25,10,5,1};
int coinnumber[4];
int temp=cents;
for(int i=0;i<=3;i++)
{
coinnumber[i]=temp/cointypes[i];
temp=temp%cointypes[i];
}
cout << "Your change will be:" << endl;
cout << "Q: " << coinnumber[0] << endl;
cout << "D: " <<coinnumber[1] << endl;
cout << "N: " << coinnumber[2]<< endl;
cout << "P: " << coinnumber[3]<< endl;
对于每种硬币类型的总数:
int Q = cents / quarter;
int D = cents / dime;
int N = cents / nickel;
int P = cents / penny;
对于最少的硬币
int Q = cents / quarter; cents %= quarter;
int D = cents / dime; cents %= dime;
int N = cents / nickel; cents %= nickel;
int P = cents;
相关文章:
- 最小硬币更换问题(自上而下方法)
- C++如何通过用户输入删除列表元素
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何使用用户输入在C++中正确填充2D数组
- C++MySQL C api用户输入行
- 使用用户定义函数的字符串反转
- 用户定义函数中的指针和输入
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- 如何只允许用户输入正整数
- C++如何计算用户输入的数字中的偶数位数
- 通过for循环使用用户输入填充列表
- 这是我尝试让用户将值输入到数组中.然后将其隐藏为大量的星号
- 在C++中,我如何接受不同于同一行的用户输入
- 当用户超过按钮点击限制时报告
- Visual C++(VS2017)中用户定义的转换不明确
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- C++问题:用户认为数字1-100,程序提出问题不超过6次即可得到答案。无法正确
- 当用户键入分隔符时,停止getline()输入
- 通过错误处理,在C++中可靠地获得用户十六进制输入
- 从用户输入中计算可能的最少可能的硬币