2015-06-20 71 views
-6

我的程序應該得到最小的 「G」 和 「C」 表示這5 * C-3 * G = PC++,爲,無限循環

例如p=48

5*12-3*4=48 
(c=12, g=4) 

我陷入無限循環。

我做了兩個其他的方法,但我想這樣做。

#include <iostream.h> 
int main() 
{int s, c, g, p, a; 
cin>>p; 
a=0; s=0; 
for (g=0; a==0; g++) 
for (c=0; p>s; c++) 
    {s=5*c-3*g; if (s==p) a=1;} 

    cout<<c-1<<endl; 
    cout<<g-1<<endl; 
return 0;} 
+2

當您使用調試器時,哪一行導致問題?什麼是變量的值(使用'watch'變量)? –

+0

提示:'for(g = 0; a == 0; g ++)'此循環在'a == 0'時結束,那麼'a'在這裏有什麼值? – shuttle87

+0

_ @ JonathanLivingston_在Stack Overflow問這樣的瑣事問題之前,請先使用您的調試器。該網站旨在提供真正的一般問題和解答的質量結果,而不是將幫助作爲您的個人幫助臺調試。 –

回答

0

的主要問題是,你正在改變的s在內環的價值,但是當內循環結束,你不重置s0。因此s == p永遠不會變成true

嘗試這種情況:

for (g = 0; a == 0; g++) { 
    for (c = 0; p > s; c++) { 
     s = 5 * c - 3 * g; 
     if (s == p) 
      a = 1; 
    } 
    s = 0; // reset s for next checking 
} 

對於輸入,

P = 12

輸出可以是:

+0

非常感謝。現在它的工作:) –

+0

不客氣,不要忘記投票。 :D –

+0

完成,剛剛得到15 +聲望:)) –