CS50 Cash действительный вход программы выхода - PullRequest
0 голосов
/ 03 сентября 2018

Я не уверен, почему мое значение изменения никогда не оценивается во втором цикле, и мой оператор печати не выполняется в конце с выведенными монетами. Когда введен правильный ввод, программа должна преобразовать плавающее число в int и ввести следующий цикл while. Затем в зависимости от значения изменения следует проверить, является ли условие истинным в каждом операторе if, пока условие while не будет ложным.

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

int main(void) {

    int coins = 0;
    float n;
    int change;
    do
    {
       n = get_float("How much do I owe you? \n");
    } while (n < 0); // continue prompt while true less than zero

    change = n * 100;

    while (change > 0)
    {
        if (change > 25) // change .25 cents
        {
             coins = coins + 1;
             change = change - 25;
        }
        else if (change > 5 && change <= 10)  // change 10 cents
        {
             coins = coins + 1;
             change = change - 10;
        }
        else if (change > 1 && change <= 5)  // change 5 cents
        {
             coins = coins + 1;
             change = change - 5;
        }
        else  // change 1 cents
        {
             coins = coins + 1;
             change = change - 1;
         }
        return coins;
      }
    printf("%d\n", coins);
}

1 Ответ

0 голосов
/ 03 сентября 2018

Проблема возникает из строки return coins;, которая находится внутри цикла while.

Вы должны написать что-то вроде:

while (change > 0) 
{
    /*update coins and change
      but do not use return.*/
}

printf("%d\n", coins);

/* as return will exit from your function, 
    you want it at the end*/
return coins;
...