2014-02-06 71 views
-1

为了做作业,我需要用C++编写一个程序,它返回硬币的变化。到目前为止,我做到了,和它的作品,除了一个问题,我不能离开while循环:退货更改,不使用货币清单

这是代码,

int calculating(int value, int start_value) { 
cout << "func" << endl; 
int counter = 0; 
while(value >= 0) { 
    if (value - start_value >= 0) { 
     value = value - start_value; 
     counter++;   
    } else {    
     cout << start_value << " : " << counter << endl; 
     start_value = start_value/2; 
     counter = 0; 
    } 
} 
return 0; 
} 

可有人请给我一些想法如何完善这一码。由于

+0

给予改变的规则是什么?什么是起始价值和价值? – kraskevich

+1

你的意思是'while(value> 0)'? –

+0

@ user2040251它需要在标准货币提名10,5,2,1整数 – depecheSoul

回答

1
while(value >= 0) { 
    if (value - start_value >= 0) { 
     value = value - start_value; 
     counter++;   
    } else {    
     cout << start_value << " : " << counter << endl; 
     start_value = start_value/2; 
     counter = 0; 
    } 
} 

如果value - start_value < 0(什么可能是在某个迭代假设你如何尝试使用它的情况下),你无限地划分start_value = start_value/2

例如:

calculating(value=4, start_value=3) 

步骤1:

while(4) { 
    if (1 >= 0) { 
     value = 1; 

步骤2:

while(1) { 
    if(-2) // false 
    } else {    
      cout << start_value << " : " << counter << endl; 
      start_value = start_value/2; 
    } 

等等,值= 1,START_VALUE = START_VALUE/2;

+0

我不认为这是无限的,因为我使用int数据类型,1/2给我0,在INT datat – depecheSoul

+0

类型停止条件不能触发,因为你是比较值> = 0,只是将START_VALUE = START_VALUE/2 ; – 4pie0

+0

@depecheSoul使用值4,3对此进行调试以查看发生了什么,4,3是奇妙的数字 – 4pie0

1

value将至少0每次,你应该尝试while (value > 0)

+0

我累了,但我没有得到正确的价值 – depecheSoul

+0

例如8,我得到,我有5货币之一,两种货币之一 – depecheSoul

+0

代码做你说的,这是肯定的!你能解释一下你想做什么吗? –

1

您可以使用break走出一轮循环。

1

当您使用int类型的对象,那么我会写循环的条件为

while (value != 0) 

你的代码中包含一个逻辑错误,当值将等于0,则循环将继续执行。

另外,我会使参数具有类型无符号整型而不是int。

而这个条件

if (value - start_value >= 0) 

将是更好地改变

if (value >= start_value)