Возникли проблемы с проблемой CS50 Greedy.c - PullRequest
0 голосов
/ 02 декабря 2018

Я недавно записался в класс CS50, предлагаемый EDx.com.В настоящее время у меня возникли проблемы с проблемой greedy.c - pset1.Я чувствую, что проблема в том, что мои циклы пока не работают.Независимо от ввода, который я даю программе, я получаю 4 монеты каждый раз.Пожалуйста, дайте мне знать, что я делаю не так.

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

int main(void)
{
int n = 0;
int count = 0;
int cents = 0;
do
{
    printf("How much change is owed?\n");
    get_int();

}
while(n > 0);

do
{
    count++;
    n -=25;
}
 while(n >= 25);

 do
 {
     count++;
     n -=10;
 }
 while(n >= 10);

 do
 {
     count++;
     n -=5;
 }
 while(n >= 5);

 do
 {
     count++;
     n -=1;
 }
 while(n >=1);


printf("Here is %i coins\n", count);

}

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Циклы do while всегда будут выполняться один раз, поэтому вы всегда получаете 4 монеты, тогда вы также не назначаете входное значение n.

Первое do while будет работать бесконечно, если n> 0, поэтому измените его на:

do {
    printf("How much change is owed?\n");
    n = get_int();
} while (n == 0);

, следующее за вашими dos добавятся к счету, даже если они не должны, ниже должно бытьлучше.

while (n >= 25) {
    count++;
    n -= 25;
}

Удачи с CS50, вот где я и начал, это сложно, но на самом деле настраивает вас на то, чтобы научиться думать.

0 голосов
/ 02 декабря 2018

Эта строка в вашем коде:

get_int();

Ничего не делает.get_int будет получать и возвращать int, однако вы никогда не помещаете это значение в переменную, поэтому входные данные не изменяют поведение программы.

Возможно, вы хотели написать что-то вроде этого:

n = get_int();
...