调用第二个*函数时编程软锁定

时间:2015-11-07 11:52:18

标签: c++ function

因此,我通过编写一个程序来练习我的C ++代码,该程序使用用户指定的大小从网格中创建匹配对游戏。为此,我将每个动作(初始化网格,绘制网格,隐藏对并从用户输入中找到对)分离成一个函数。 不幸的是,在某些时候 - 我无法告诉何时或如何 - 程序开始无法调用第二个*和后续函数。调用 <?php define('BASE_URL', 'http://localhost/project/'); ?> <?php require(BASE_URL.'templates/menu.php'); ?> 后,它应立即转到drawGrid - 然而,它会在该步骤停止。命令窗口中的光标一直闪烁,因此程序运行正常,但我无能为力将使其进展。 我通过调试检查了它,它确实成功执行了hidePairs并继续前进到drawGrid中的下一行,但是没有更多的代码被执行。我做错了什么?

*编辑:第三个功能,它成功绘制网格,然后在隐藏对之前停止。删除了不必要的引用调用,并且为了清晰起见添加了所有功能。我的坏:P

main

3 个答案:

答案 0 :(得分:0)

只有当您添加由数组大小引起的数字30和更高时,它才会失败 我不知道你的设置,但确保你有像GNU C ++ 11

这样的语言标准的编译器设置

它应该有用

答案 1 :(得分:0)

结果发现hidePairs函数中存在无限循环。它没有在pairsArray中读取正确的坐标,因此它有空间从不填充。并且由于循环仅在所有未使用的空间被填充时设置为结束,因此它永远不会停止。 给别人的建议:永远理智 - 检查你的循环!

答案 2 :(得分:0)

您已将对的数量初始化为numPairs = gridX * gridY / 2,但该大小(gridXgridY)还包含标题列和行,它们在配对中不起作用。 因此,要解决此问题,您的numPairs应为(gridX-1) * (gridY-1) / 2。 否则,这些配对将会耗尽,但配对功能仍在寻找!这是你的无限循环。

我还建议您为gridXgridY找到更好的名称,以表明标头已计算在内,或者在代码的其余部分中要非常小心,以了解{{1} }}和gridX意味着网格只在索引gridY开始而不是索引1