2017-02-15 37 views
0

Мне немного стыдно за задание этого глупого вопроса, но факт в том, что я пробовал все, и я до сих пор не вижу, где ошибка.CS50 pset1 Greedy Challenge

Я - 101% noob в отношении программирования, и я записался в CS50. Я стараюсь извлечь максимум из этого, поэтому я всегда принимаю менее комфортные задачи, чтобы лучше всего учиться.

Я закончил свой код для Greedy Challenge в pset1 CS50. Я проглотил свой разум, чтобы сделать его таким же хорошим, чистым и простым, как позволяет мое скромное знание, но каждый раз, когда я проверяю свой код, я получаю подсказку только по одной ошибке.

Настоящим я прилагаю как, код проверки и мой wirtten код:

Проверено код терминалом сценария CS50:

:) greedy.c exists :) greedy.c compiles :) input of 0.41 yields output of 4 :) input of 0.01 yields output of 1 :) input of 0.15 yields output of 2 :) input of 1.6 yields output of 7 :(input of 23 yields output of 92 \ expected output, but not "94\n" :) input of 4.2 yields output of 18 :) rejects a negative input like -.1 :) rejects a non-numeric input of "foo" :) rejects a non-numeric input of ""

Вот мой код:

#include <stdio.h> 
#include <cs50.h> 
#include <math.h> 

float change; 

int coins = 0; 
int quantity; 

int main (void) 
{ 
do 
{ 
    printf("O hai! How much change is owed?\n"); 
    change = get_float(); 
} 
while (change < 0); 



//converting float change (dollars) into integer change (cents) 

quantity = round(change * 100.00); 



while (quantity > 25) //This runs as long as quantity left is bigger than a quarter coin 
{ 
    quantity -= 25; 
    coins++; 
} 
while (quantity >= 10) //This runs as long as quantity left is bigger than a dime coin 
{ 
    quantity -= 10; 
    coins++; 
} 
while (quantity >= 5) //This runs as long as quantity left is bigger than a nickel coin 
{ 
    quantity -= 5; 
    coins++; 
    } 
while (quantity >= 1) //This runs as long as quantity left is bigger than 0 
{ 
    quantity -= 1; 
    coins++; 
} 


printf("%i\n", coins); 
}` 

Отказ от ответственности: Хочу отметить, что я прекрасно знаю Кодекс честности Гарварда. Я не пытаюсь найти легкое решение проблемы и просто избавиться от этой проблемы.

Я надеюсь, что кто-то возьмет свое собственное время и запишет объяснение, которое просветит меня и поможет мне понять причину моего отказа в коде whys. Я не ищу ответа, и вам не нужно указывать это, если вы не чувствуете себя так. Я просто неопытный студент-новичок в CS, который готов прочитать все ваши ответы и, наконец, понять, почему что-то, что должно работать, совсем не работает.

Большое спасибо за ваше терпение и время!

+0

'количество> 25' ->' количество> = 25' – BLUEPIXY

+0

Какой выход вы получите за 0,25? –

+0

1! Прямо сейчас решено! Большое спасибо! – Togeri

ответ

1

Проблема заключается в вашем первом сравнении, которое читается (quantity > 25). Когда у вас будет грандиозная сумма в 23 доллара, вы ожидаете 23 * 4 = 92 coins.

Однако, когда вы вычли 91 из этих кварталов вы в конечном итоге с (quantity == 25) и проверка не удается (поскольку quantity больше не строго больше чем 25 но равен ему), толкая вас через в 2 пятаков и затем в последний никель, делая его отображаемым 94 монетами.

Исправление (вы должны уже догадались теперь), чтобы заменить эту проверку с (quantity >= 25)

+1

О, я вижу !!!! Большое спасибо @YePhIcK !! Я понимаю, где проблема. Очень осторожно объяснил! Я очень ценю это! – Togeri