在杂货店进行更改
Making change at the grocery store
本文关键字:杂货店 更新时间:2023-10-16
我是计算机科学的新手,目前正在学习C 。
我们被给予了一个分配,以大量计算变化。例如,我在杂货店的更改是37.37美元。该计划的产出会告诉我我得到的每笔账单中有多少(1二十美元账单,1张十美元账单,1个五美元的账单,2张一美元的账单,一季度,一毛钱和两个便士)。
我已经弄清楚了以前作业的硬币如何做到这一点,但是这些都是全部美元的事实使我撞墙了。
我已经尝试用帐单面额分开,但我无法弄清楚(我在开始时评论了cout
/cin
语句,因此每次测试程序时,我都不必在数字中输入):
#include <iostream>
using namespace std;
int main() {
double price, change;
int paymentQ, quarters, dimes, nickels, pennies,
twentyDollar, fiftyDollar,
fiveDollar, dollars, tenDollar, totalChange;
//cout << "What is price? " << endl;
//cin >> price
//cout << "Please insert cash or select payment type: " << endl;
//cin >> paymentQ;
//change = (paymentQ - price);
change = 37.37;
dollars = static_cast<int>(change);
fiveDollar =
tenDollar =
twentyDollar =
fiftyDollar =
{
dollars = static_cast<int>(change);
quarters = (((change - dollars) * 100) / 25);
dimes = (((change - dollars) * 100) - (quarters * 25)) / 10;
nickels = (((change - dollars) * 100) - (quarters * 25) - (dimes * 10)) / 5;
pennies = (((change - dollars) * 100) - (quarters * 25) - (dimes * 10) - (nickels * 5) + .5);
}
cout << "nYour change isn " << twentyDollar << " Twenty Dollar bill/s " << endl
<< tenDollar << " Ten Dollar Bill/s" << endl <<
fiveDollar << " Five Dollar Bill/s" << endl <<
dollars << " One Dollar Bill/s" << endl <<
quarters<< " Quarters "<< endl <<
dimes<< " dimes " << endl <<
nickels << " Nickels" << endl <<
pennies << " pennies "<< endl << endl;
return 0;
}
您分配面额变量的方式都是错误的,甚至可能不应该编译。即使确实如此,它也有很多重复性,而且一般不容易阅读。
尝试更多这样的东西:
#include <iostream>
using namespace std;
int main() {
double price, paymentQ, change;
int quarters, dimes, nickels, pennies,
fiftyDollars, twentyDollars, tenDollars, fiveDollars, oneDollars;
//cout << "What is price? " << endl;
//cin >> price
//cout << "Please insert cash or select payment type: " << endl;
//cin >> paymentQ;
//change = (paymentQ - price);
change = 37.37;
// despite what cout shows, 37.37 is actually 37.369999999999997 and
// so would become 3736 instead of 3737 when multiplied by 100 and
// truncated as-is to an int, so it needs to be rounded up a little
// bit to account for that (see https://stackoverflow.com/questions/149033/) ...
pennies = (change * 100) + 0.1; // see https://ideone.com/wmlzlm for why this work...
fiftyDollars = pennies / 5000; pennies %= 5000;
twentyDollars = pennies / 2000; pennies %= 2000;
tenDollars = pennies / 1000; pennies %= 1000;
fiveDollars = pennies / 500; pennies %= 500;
oneDollars = pennies / 100; pennies %= 100;
quarters = pennies / 25; pennies %= 25;
dimes = pennies / 10; pennies %= 10;
nickels = pennies / 5; pennies %= 5;
cout << "nYour change is " << change << "n"
<< twentyDollars << " Twenty Dollar Bill/sn"
<< tenDollars << " Ten Dollar Bill/sn"
<< fiveDollars << " Five Dollar Bill/sn"
<< oneDollars << " One Dollar Bill/sn"
<< quarters << " Quarter/sn"
<< dimes << " Dime/sn"
<< nickels << " Nickel/sn"
<< pennies << " Penny/sn"
<< endl;
return 0;
}
输出:
您的更改是37.371二十美元账单/s1个十美元账单/s1五美元账单/s2一美元账单/s1季度/s1毛钱/s0镍/s2便士/s
实时演示
相关文章: