从用户输入中计算可能的最少可能的硬币

Calculating the fewest possible coins possible from user input

本文关键字:硬币 用户 输入 计算      更新时间:2023-10-16

相当新鲜的编码器,它正在学习创建一个程序,该程序将从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;