# pset1 cash: greedy algorithm coin change round off

The output is not being rounded off: It doesn't count the cents value if you input a dollar in decimal. if it's \$45.67, it only counts change for \$45. Also, output comes back 0 if the input is negative, while I want the question to be repeated if the input is negative..

e.g., input = 0.67, output = 0 (expected 6).... input = 7.36, output = 3 (not counting cents).... input = 4.20, output = 4 (expected 18).... Also, input 23 gives output 5 instead of 93.... And it rejects negative input like -2, whereas I want it to loop back to the question.

Here is my code:

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

void greedyAlgorithm(int n); //Define the function

int main(void)
{
float dollars=get_float("Change owed:"); // Ask for change
int n=round(dollars*100);
greedyAlgorithm(dollars); // Run the greedy algorithm
return 0;
}

void greedyAlgorithm(int n)

{
int A=0, B=0, C=0, D=0, count=A+B+C+D;

//total number of quarters (\$0.25)
while(n>=25)
{
count++, A++;
n=n-25;
}
..........................
//repeat with each value of coins

printf("%d\n", count);
}
``````
• Could you rephrase your question? I don't understand what you're asking. Also, your code currently only counts the number of quarters. And you can create a loop until the user gives a positive input.
– TLH
Commented Mar 30, 2020 at 5:11
• I have created other similar loops like quarters that also count dimes, nickels, and pennies. I didn't want to include the repetitive code here. My problem is that it doesn't give the desired output to the above-mentioned input. It doesn't count the cents value if you input a dollar in decimal. if it's \$45.67, it only counts change for \$45. Also, output comes back 0 if I input any negative, while I want the output to repeat the question. Commented Mar 31, 2020 at 19:13

The program is sending users input value `dollars` to the function here `greedyAlgorithm(dollars); // Run the greedy algorithm`. Is that what you meant? Probably not, since the previous line is `int n=round(dollars*100);`, you probably meant to send `n` to the function.
Review the lecture notes (or the lecture) to see how to use `do ... while` to do "something first, then checks a condition, and repeats until the condition is no longer true.". It needs a do/while loop. Did you do mario? If so, use the same strategy. If not, review the lecture or the lecture notes, there is an example in "positive.c".