2

我的 TI-84 Plus C Silver Edition 计算器上的 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

所以在这种情况下,这两种药物是IPPINEVO。如果我给一个 100 公斤的患者体重,并选择IPPI,那么我希望看到

DOSAGE                 200

然而,我所看到的是

DOSAGE              200
DOSAGE               50

所以显然两个“if”语句都在运行,即使我只给出了一个值(IPPI)。[当我设置ANEVO] 时发生同样的错误。

我也尝试将这两个If语句都包含在内Then...End,因此代码如下所示:

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 很陌生,所以我确定有一个我看不到的简单错误,但我现在很难过。

4

3 回答 3

5

您需要更改第二个输入命令,以便将信息存储为字符串而不是数字变量 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
于 2015-05-12T18:13:00.843 回答
3

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

:If A=IPPI

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

同样,当您输入时,如果您输入IPPI,它将乘以这些变量并分配A为该产品。

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

于 2015-05-11T19:02:20.977 回答
2

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

于 2015-07-05T02:13:02.380 回答