2015-04-27 133 views
-2

尋找一些關於爲什麼這麼奇怪地運行的建議。一切都在.25完美的作品,但低於.25和我得到一些非常奇怪的結果。怎麼了?CS50 PS 1貪婪

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

int main(void) 
{ 
int v; 
int count; 
int q= 25; 
int d= 10; 
int n= 5; 
int p= 1; 
float m; 

do 
{ 
    printf("How many coins do you need for this change?:\n"); 
    m=GetFloat(); 
}  
while (m<0); 


int balance; 

m=m*100; 
balance= round (m); 



while (balance >= q) 
{ 
    v=balance/q; 
    count=v; 
    balance=balance-(v*q); 


} 

while (balance >= d) 
{ 
    v=balance/d; 
    count=count+v; 
    balance=balance-(v*d); 

} 

while (balance >= n) 
{ 
    v=balance/n; 
    count=count+v; 
    balance=balance-(v*n); 
    printf("%i\n", count); 
    printf("%i\n", count); 

} 

while (balance >= p) 
{ 
    v=balance/p; 
    count=count+v; 
    balance=balance-(v*p); 

} 

printf("Total number of coins needed:%i\n", count); 
} 
+1

0.25爲了什麼?什麼具體的價值?什麼奇怪的結果? –

+0

@ Politank-Z首先閱讀,然後評論。如果你不明白,請不要評論。 –

+0

@Xz_awan錯誤。評論是要求澄清的適當場所。 –

回答

3

對於低於0.25的值,你從來沒有進入第一部分的同時(因爲平衡< Q),因此計數保持未初始化,導致不確定的結果。

只是改變 -

int count; 

int count = 0;