cs50 pset 1 ca sh выводит только нули - PullRequest
0 голосов
/ 21 июня 2020

Я попытался выяснить, в чем проблема с моим кодом, я проверил, в порядке ли скобки, но все еще не могу понять. Это pset 1 ca sh

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

int main(void)
{
 {

 float dollars;
   int cents = 0;
   int coin_amount = 0;

do
    {
//prompt user for amount of change
    dollars = get_float("change: ");
    }
 while (cents < 0);
    
  cents = round(cents * 100);

    
     while (cents >= 25)
    {
        cents = cents - 25;
        coin_amount++;
    }
    while (cents >= 10)
    {
        cents = cents - 10;
        coin_amount++;
    }
    while (cents >= 5)
    {
        cents = cents - 5;
        coin_amount++;
    }
    while (cents >= 1)
    {
        cents = cents - 1;
        coin_amount++;
    }
  printf("%d\n",coin_amount);
}

Ввод: 1 доллар

Ожидаемый выход: 4 монеты

1 Ответ

0 голосов
/ 21 июня 2020

Ваша ошибка в том, что вы говорите cents = round(cents * 100), когда действительно хотели сказать cents = dollars * 100

Код трудно читать из-за отсутствия согласованных отступов, но вы делаете это сначала, пока l oop также не работает должным образом. Он проверяет стоимость центов, но на самом деле вы не пытаетесь конвертировать доллары в центы до тех пор, пока не закончите l oop. Другими словами, do-while l oop будет запускаться только один раз. Вы можете ввести в него отрицательное число и нарушить намерение программы. Вам нужно преобразовать в центы в пределах этого l oop. Если это сработает, оцените голос за.

...