如果我要编写一个采用另一个c ++程序的小程序,没有编译器或运行时错误,作为文本中的输入文件,将如何我检查它是否会结束?
我现在的想法是只将主cpp文件作为输入,并检查while循环,do-while循环,for循环和assert语句。
我觉得还有更多的案例,这可能有点超出我的头脑。
感谢任何帮助。
答案 0 :(得分:3)
这被称为"暂停问题",并且已被证明无法解决。
假设您有一个函数bool halts(string program)
,它确定程序是否会停止。然后你可以编写一个程序
if (halts(input)) {
while (true);
}
当且仅当其输入没有时才停止。因此,如果输入是这个程序,那么它将暂停,当且仅当它没有,这是一个逻辑矛盾。
因此,这样的功能不存在。
答案 1 :(得分:1)
众所周知,这个问题永远无法解决 数学上,it is impossible。