初始化后,Bool数组填充了不正确的值

时间:2015-05-24 01:49:36

标签: c++ arrays

简短问题:

我初始化数组中的值并显示它是一个特定值,然后在下次检查它时值已更改。我做了什么才能实现这一目标?

详细信息:

为了学习如何编码,我在网上练习随机编程挑战。目前的情况是取一串数字并确定它是否是魔法"。这包括只在字符串中只有一个数字,并通过将一个数字指向另一个数字来遍历整个字符串(如果你有113个,第一个1将计入第二个1,这将计入3,这将计数对自己而言。

通过这个数字运行良好,我的工作没有问题,我想,因为我已经通过这种方式,我会做一个bool数组来计算是否使用了数字。一个10个bool的数组,而array [i]将是一个bool值,表示我是否被使用过。可能不是最好的实现,但它看起来很简单。

阵列"访问过"工作,但" numUsed"似乎不起作用。我已经初始化了每个值,以防出现问题,并且在测试时我已经检查过每个值从0开始。但实际检查数组时,值并不正确。

以下是我的测试输出。第一串数字是我打印出#34; numUsed"数组,显示我已将其初始化为零。然后是我检查的数字,第一次检查时的数字的值,然后是该数字的numUsed数组的值

0000000000 - 10[0][0]
0000000000 - 11[1][1]
0000000000 - 12[2][254]
0000000000 - 13[3][40]
0000000000 - 14[4][0]
0000000000 - 15[5][10]
0000000000 - 16[6][0]
0000000000 - 17[7][0]
0000000000 - 18[8][0]
0000000000 - 19[9][0]
0000000000 - 20[2][254]

代码:

bool visited[7] = {0};
bool numUsed[10] = {0};

for(int i = 0; i < 10; i++) {
    cout << (numUsed[i] = false);
}

int charPlace = 0;
cout << " - " << numString;
for(int i = 0; i < numString.length(); i++) {
    charPlace = (charPlace + numString.at(charPlace)) % (numString.length());

    if(visited[charPlace] == false) visited[charPlace] = true;
    else                            return false;

    cout << "[" << numString.at(charPlace) << "][" << numUsed[(char)numString.at(charPlace)] << "]";
    if(numUsed[numString.at(i)] == false) numUsed[numString.at(i)] = true;
    else {
        return false;
    }
}

1 个答案:

答案 0 :(得分:0)

最有可能的问题是numString.at(charPlace)类似于char '1',而不是1之类的整数。