关于 TI-84 Plus C 银版 "If" 声明的问题

Trouble on "If" statement on TI-84 Plus C Silver Edition

我的 TI-84 Plus C 银版计算器上有一个 TI BASIC 小代码,可以根据患者的体重确定正确的药物剂量。例如,如果每千克患者体重服用 5 毫克阿司匹林(事实并非如此),那么代码应该告诉我给 100 公斤重的患者服用 500 毫克阿司匹林。 然而,代码正在解决每一种可能的药物。这是:

PROGRAM:DRUG1
:Input "PATIENT WEIGHT: ",W
:Input "AGENT NAME: ",A
:If A=IPPI
:Disp "DOSAGE",W*2
:If A=NEVO
:Disp "DOSAGE", W*0.5

所以在这种情况下,两种药物是[=​​15=]和NEVO。如果我给患者体重 100 公斤,并选择 IPPI,那么我希望看到

DOSAGE                 200

然而,我看到的是

DOSAGE              200
DOSAGE               50

所以显然两个 "if" 语句都是 运行,即使我只给出了一个值 (IPPI)。 [当我将A设置为NEVO时出现同样的错误]。

我也试过在 Then...End 中包含两个 If 语句,所以代码看起来像:

PROGRAM:DRUG1
:Input "PATIENT WEIGHT: ",W
:Input "AGENT NAME: ",A
:If A=IPPI
:Then
:Disp "DOSAGE",W*2
:End
:If A=NEVO
:Then
:Disp "DOSAGE", W*0.5
:End

但这并没有改变什么。 我是 BASIC 的新手,所以我确定有一个我看不到的简单错误,但我现在很困惑。

您正在尝试将变量名称用作字符串。

:If A=IPPI

这不是将字符串与 "IPPI" 进行比较,而是将数值变量 A 与数值 I*P*P 进行比较*I,我猜你的情况是 0。

同样,当您输入 IPPI 时,它会将这些变量相乘并指定 A 为该乘积。

您需要使用字符串变量和引号。

您需要更改第二个输入命令,以便将信息存储到字符串而不是数字变量 A。为此,TI-84 系列计算器的 [VARS][7] 菜单中有十个字符串变量。

另请注意,您必须将字符串与字符串 "IPPI" 进行比较,而不是将字母序列(数字变量)IPPI 进行比较。所以你的代码可以是:

:Input "PATIENT WEIGHT: ",W
:Input "AGENT NAME: ",Str1
:If Str1="IPPI"
:Disp "DOSAGE: ",W*2
:If Str1="NEVO"
:Disp "DOSAGE: ",W*0.5

或更简洁:

:Input "PATIENT WEIGHT: ",W
:Input "AGENT NAME: ",Str1
:Disp "DOSAGE:"
:If Str1="IPPI"
:Disp 2W
:If Str1="NEVO"
:Disp .5W

您的程序的主要问题是您知道将字符串分配给仅支持数字的变量。这使变量的新值成为字符串的布尔值 True,在 TI-BASIC 的情况下为值 1。要解决此问题,您需要将其分配给支持字符串中字符的变量,在这种情况下你可以使用 STR1.