计算没有If/While/For语句或任何数据结构的更改
Calculate Change Without If/While/For Statement or any data structures
我正在尝试编写一个程序,该程序可以生成最少的零钱(四分之一、五分之一、一角硬币、便士),但规定我不能使用任何类型的if、for、while语句。
我相信这是可能的,但我的能力非常有限,似乎不知道如何在不违反规则的情况下实现这一点。
以下代码有效,当它遇到值0时接受,然后在尝试使用0上的模数时中断(我认为):
#include <iostream>
int main() {
int cents;
std::cout << "Enter an amount in cents less than a dollar:" << std::endl;
std::cin >> cents;
int quarters = cents/25;
int remainder = cents % (quarters*25);
int dimes = remainder/10;
remainder = remainder % (dimes*10);
int nickels = remainder/5;
remainder = remainder % (nickels*5);
int pennies = remainder/1;
std::cout << "Your change will be: " << "n Q: " << quarters << "n D: " << dimes << "n N: " << nickels << "n P: " << pennies;
return 0;
}
您可以在不将每个硬币乘以其出现次数的情况下完成此操作。(不管怎样,模量做的都是你试图自然做的。)
int quarters = cents/25;
int remainder = cents % 25;
int dimes = remainder/10;
remainder = remainder % 10;
int nickels = remainder/5;
remainder = remainder % 5;
int pennies = remainder/1;
这样,在任何情况下都不会对数字0使用模数。
在行中:
remainder = remainder % (dimes*10);
您允许余数变为0。这将导致除以零:
int nickels = remainder/5; //0
remainder = remainder % (nickels*5); // modulo 0 % 0
要在不使用if
的情况下执行此操作,您可以根据找到的硬币缩小cents
,然后继续。例如:
int quarters = cents / 25;
cents -= quarters * 25;
继续这样。
相关文章:
- 链表,反向函数,数据结构
- 如何使用set实现无序数据结构?
- 我们可以将数据永久保存为数据结构吗?
- C++中的可变长度数组/数据结构
- 用于存储由空格分隔的字符串的 C++/C 数据结构
- 通过 NIF 从C++返回自定义数据结构
- 从输入中删除重复项,而不使用任何数据结构
- 任何方法都可以在C++中比较数据结构中的许多方法
- 是否可以检查存储在堆栈上的单词是否是回文,而C++中没有任何附加数据结构
- 使用运营商New分配的数据结构是否有任何副作用
- stl 中是否有任何数据结构可以在 O(1) 或 O(log n) 中插入元素,我可以在其上编写自己的bin_searc
- 协议缓冲区、Apache Thrift或任何其他数据结构序列化协议中的递归数据结构
- 如何将比较和交换用于任何共享数据结构的免等待互斥
- 为什么Visual Studio说如果我的程序中没有编写任何数据结构代码,我就会出现堆栈溢出?C++
- 计算没有If/While/For语句或任何数据结构的更改
- 在c++中复制类似数据结构的任何基于模板的通用方法
- c++中是否有任何数据结构或库可以像Python列表和字典一样工作?
- 任何STL数据结构,如pair,提供三个项目(类型)而不是两个
- 应该使用multimap、boost::bimap、multiset或任何其他数据结构
- 如何将不同的数据结构集成为一个?任何设计模式或经验