2013-02-25 106 views
-1

所以,我正在做在线挑战,这是我必须做的: 我必须输出数字“N”的魔术。之后,你输入“N”个法术来形成魔法。我做错了什么? (C++数组)

因此,基本上,一个示例是输入:

5 
3 
2 
1 
1 
0 

的这个输出应为2,因为3 + 2 = 5的魔法。然而,重要的注意事项(其我有问题的是,每个咒语1到的值)

实施例:

12 
5 
5 
4 
4 
4 
3 
3 
3 
2 
2 
2 
1 

所以,5 + 5 = 10,但由于每个咒语+ 1值,6 + 6 = 12。所以输出应该是2

这里是我的代码,但由于某些原因,它输出3.

#include <iostream> 
using namespace std; 
int main() 
{ 

    int n,c=0,br=0; 
    cin>>n; 
    int a[150]; 

    for(int i=0;i<n;i++) 
    { 
     cin >> a[i]; 
     a[i]+=1; 
     while(c<=n) 
     { 
      c+=a[i]; 
      br++; 
     } 
    } 


    if(a[0]==n-1) 
    br--; 

    cout << br << endl; 
    return 0; 
} 
+2

标题说“C数组”,但你使用C++?不知道你的'拼写价值'是什么意思。 – 2013-02-25 20:37:42

+0

请用更抽象的方式描述所需的输出。 – Oswald 2013-02-25 20:40:30

+0

它是C++,我不知道它为什么说C ..输出是你需要多少法术来形成主魔法。例如,如果N = 24,则需要24个法术才能形成该魔法。我们输入N(魔法的力量),然后我们输入N个按照最高到最低功率排序的法术。之后,我们输出我们需要制造魔法的法术。但是,请记住,每个SPELL对它有+1值,如果该咒语是11,我们会认为它为12. – 2013-02-25 20:43:15

回答

1

使用心理调试技能:

while(c<=n) 

手段,而总的法术是少于或等于法术数量。

这意味着它使用前5个法术(总数是6),然后是第二个5法术(总数是12),然后由于它仍然少于或等于法术数量(12),它使用前四个法术(总数现在是16)。我想你想要c<n而不是c<=n

无关:你的问题措辞十分措辞,几乎没有意义。

+0

该死的,我不知道我是如何错过的...感谢您的帮助。对于措辞错误的文字,我感到很抱歉,我只是因为我一直在尝试做这件事而感到愤怒......再次感谢! – 2013-02-25 20:56:30

+1

你错过了,因为你没有使用调试器,也没有使用最原始的或基本的调试方法。使用'cout'或'printf',并用调试器进入代码。 – 2013-02-25 21:05:52