2013-04-24 38 views
0

不知道为什么,但我的程序不断终止。我删除了所有停止功能。这里的代码:为什么我的TI-84程序终止?

:Lbl A 
    :ClrHome 
    :Prompt A 
    :ClrHome 
    :Prompt B 
    :ClrHome 
    :Prompt C 
    :Disp "B^2-4AC=" (Program stops here for some reason) 
    :If D<0 
    :Then 
    :ClrHome 
    :Disp "Nonreal answer" 
    :"..." 
    :Pause 
    :ClrHome 
    :Menu("Menu", "Restart", D" 
    :Lbl prgmQUADSTE3 
    :Lbl A 
    :... 
+0

您如何知道您的程序正在停止** right **? – eboix 2013-04-24 20:34:13

+3

我不是专家,但是这行 - >:菜单(“菜单”,“重新启动”,D“< - 肯定语法上看起来不好 – Jonesopolis 2013-04-24 20:34:52

+0

另外,你有一个错误,你正在写”B^2-4AC“屏幕上,但是你永远不会将它的值存储在D中。另外,在你写入之前,你的ClrHome是否是真实的。 – eboix 2013-04-24 20:35:49

回答

1

我怀疑你的程序正在退出,因为你从不使用“结束”来结束你的if语句。除非var D小于零,否则程序将在该If语句中退出,因为之后的每一行都被视为If语句的一部分,因此被忽略。使用“结束”标记来指定哪些行是If语句的一部分,哪些行不是。我怀疑你想要:

:If D<0 
:Then 
:ClrHome 
:Disp "Nonreal answer" 
:"..." 
:Pause 
:ClrHome 
:Menu("Menu", "Restart", D" 
:End 
:... 

或类似的东西。我99%肯定这是你的问题。

其他要注意的是您声明Lbl A两次。在TI-BASIC中,当您使用转到A时,计算器从程序开始处开始并寻找第一个“Lbl A”,在这种情况下是第一行。其次,在你的菜单中,通过在你的唯一选项后面加上这个参数“D”,一旦用户点击了它,你将会标记D,这个不存在,因此,程序将退出,出现错误Lbl 。

这条线: 的Lbl prgmQUADSTE3

是不是一个有效行。我假设你想让程序自己调用或者调用一个单独的程序。如果程序自己调用,我建议你使用Goto语句,因为你的方法会导致类似堆栈溢出/内存泄漏的情况。