【发布时间】:2013-11-14 20:29:27
【问题描述】:
您好,我试图在一个简单的一维数组中出现 1 后计算零的数量,我不知道为什么计数器总是为零。
int main ()
{
int testarray[9];
testarray[0] = 0;
testarray[1] = 0;
testarray[2] = 1;
testarray[3] = 1;
testarray[4] = 0;
testarray[5] = 0;
testarray[6] = 0;
testarray[7] = 1;
testarray[8] = 1;
int counter = 0;
bool white = false;
bool prevValue =true;
bool black = true;
bool check = false;
int num = 0;
for (int i = 0; i<8; i++) {
num = testarray[i];
if (num == 1)
white = true;
else
white = false;
if((white ==true) && (prevValue == false)) {
if(i == 0) {
check = true;
i++;
}
else
check = false;
}
else {
if (check)
counter++;
}
prevValue = true;
}
cout << "Counter: "<<counter;
return 0;
}
实际的实现涉及使用这个 for 循环来检测边缘。我试过弄乱变量,但无济于事。白色 = 1 和黑色 = 0 的原因是因为我正在使用这个循环来解决基于视觉的问题。任何帮助将不胜感激。
【问题讨论】:
-
在什么情况下
prevValue曾经false? -
良好的格式可能会大大增加您调试自己代码的机会。此外,如果您总是将大括号放在单行 if 或 else 语句中,则深层嵌套 if 出错的机会将更少
-
只有当 i==0 && white==true && prevValue==false 时,您的计数器才会增加。因此,您检查的数组中唯一的条目是 testarray[0]。
-
从头开始,你会比修改这段代码更快地找到解决方案...
-
prevValue 基本上是白色的,所以如果之前的值是白色的应该是假的
标签: c++ if-statement for-loop counter