数组问题C ++

时间:2014-02-23 04:08:27

标签: c++ arrays

我正在处理this问题。这是我的代码

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

    int numCases,num,zeroCount=0,mulFive,temp,i=0;
    cin>>numCases;
    //cout<<numeric_limits<int>::max()-1000000000;
    int solutionArray[numCases];
    temp=numCases;
    while(numCases--)
        {
            cin>>num;
            mulFive=5;
            while(num/mulFive!=0)
                {
                    zeroCount=zeroCount+ (num/mulFive);
                    mulFive=mulFive*5;
                }
            solutionArray[i]=zeroCount;
            i++;
            //cout<<zeroCount;
        }
    for(int k=0;k<temp;k++)
        cout<<solutionArray[k]<<endl;

    return 0;
}

现在,当我使用上面评论过的cout<<zeroCount;命令输出结果时,我得到了正确的答案,但是在为数组添加相同的解决方案时会发生一些事情,我得到了一些错误的答案投入。对于上面问题链接中给出的示例,这是我的输出。

6
3
60
100
1024
23456
8735373
0
14
38
291
6152
2189989

这是输入单个数字时的输出。

1
8735373
2183837

可能是什么问题?

1 个答案:

答案 0 :(得分:1)

它与数组无关。问题是你没有在每个案例之间重置zeroCount,因此你要将每个案例的结果添加到前一个案例的结果中。

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

    int numCases,num,zeroCount,mulFive,temp,i=0;
    cin>>numCases;
    //cout<<numeric_limits<int>::max()-1000000000;
    int solutionArray[numCases];
    temp=numCases;
    while(numCases--)
        {
            cin>>num;
            zeroCount = 0;
            mulFive=5;
            while(num/mulFive!=0)
                {
                    zeroCount=zeroCount+ (num/mulFive);
                    mulFive=mulFive*5;
                }
            solutionArray[i]=zeroCount;
            i++;
            //cout<<zeroCount;
        }
    for(int k=0;k<temp;k++) { // Always put bodies of if/while/for in braces, even if it's one statement
        cout<<solutionArray[k]<<endl;
    }

    return 0;
}