Я очень новичок в C. Я работаю с Python. Я хотел бы знать, где я ошибся с моим кодом.
Я решаю жадную задачу cs50. Что не так с моим кодом? С некоторыми номерами работает, с другими нет. Я пытаюсь получить ответ от пользователя, спрашивающего, сколько сдачи вернуть, а затем рассчитать минимальное количество монет, которые я могу вернуть, используя только 0,25 доллара, 0,10 доллара, 0,05 доллара, 0,01 доллара.
#include <cs50.h>
#include <stdio.h>
int main(void)
{
float n;
do
{
n = get_float("How much change is owed?\n");
}
while(n == EOF);
int minimumamountofcoins = 0;
if (n/.25 >=1){
do
{
n -= .25;
minimumamountofcoins++;
}
while (n/.25 >= 1);
}
if (n/.1 >=1){
do
{
n -= .1;
minimumamountofcoins++;
}
while (n/.1 >=1);
}
if(n/.05 >=1){
do
{
n -= .05;
minimumamountofcoins++;
}
while (n/.05 >=1);
}
if (n/.01 >=1){
do
{
n -= .01;
minimumamountofcoins++;
}
while (n/.01 >=1);
}
printf("The minimum amount of coins is %d\n", minimumamountofcoins);
}
Новый код: (работает отлично кроме входа в 4.2)
#include <cs50.h>
#include <stdio.h>
int main(void)
{
float n;
do
{
n = get_float("How much change is owed?\n");
}
while(n == EOF);
int cents = (int)(n * 100);
int minimumamountofcoins = 0;
if (cents/25 >= 1){
while (cents/25 >= 1)
{
cents -= 25;
minimumamountofcoins++;
}
}
if (cents/10 >= 1){
while (cents/10 >= 1)
{
cents -= 10;
minimumamountofcoins++;
}
}
if(cents/5 >= 1){
while (cents/5 >= 1)
{
cents -= 5;
minimumamountofcoins++;
}
}
if (cents/1 >= 1){
while (cents/1 >= 1)
{
cents -= 1;
minimumamountofcoins++;
}
}
printf("The minimum amount of coins is %d\n", minimumamountofcoins);
}
cs50
. Он содержит библиотеку, которая обрабатывает некоторые основные задачи ввода-вывода, и теоретически позволяет студентам сосредоточиться на том, что более важно. Лично я считаю это плохой идеей в том смысле, что в C такие детали являются одной из важных вещей, которые студент должен изучить. - person John Coleman   schedule 16.08.2017while (n/.1 >=1);
используйтеwhile (n >= (0.01 - 0.005));
... - person chux - Reinstate Monica   schedule 16.08.2017