如何编写检查程序是否会终止的代码?

时间:2014-10-31 15:40:33

标签: c++

如果我要编写一个采用另一个c ++程序的小程序,没有编译器或运行时错误,作为文本中的输入文件将如何我检查它是否会结束

我现在的想法是只将主cpp文件作为输入,并检查while循环,do-while循环,for循环和assert语句。

我觉得还有更多的案例,这可能有点超出我的头脑。

感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

这被称为"暂停问题",并且已被证明无法解决。

假设您有一个函数bool halts(string program),它确定程序是否会停止。然后你可以编写一个程序

if (halts(input)) {
    while (true);
}

当且仅当其输入没有时才停止。因此,如果输入是这个程序,那么它将暂停,当且仅当它没有,这是一个逻辑矛盾。

因此,这样的功能不存在。

答案 1 :(得分:1)

众所周知,这个问题永远无法解决 数学上,it is impossible