【问题标题】:Trouble on "If" statement on TI-84 Plus C Silver EditionTI-84 Plus C Silver Edition 上的“If”语句出现问题
【发布时间】:2015-07-22 09:53:25
【问题描述】:

我的 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。如果我给一个100kg的病人体重,然后选择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 还很陌生,所以我确信有一个我看不到的简单错误,但我现在很难过。

【问题讨论】:

    标签: ti-basic


    【解决方案1】:

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

    【讨论】:

    • 这是错误的。字符串不会转换为布尔值。如果您在 Input A 提示符处输入 IPPI,则数字变量 A 将包含 IPP*I,如 MattPutnam 的回答所述。
    • @lirtosiast 是的,但即使他修复它并按照 MattPutnam 的回答所述进行操作,仍然会有这个问题
    【解决方案2】:

    您需要更改第二个输入命令,以便将信息存储为字符串而不是数字变量 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
    

    【讨论】:

    • 谢谢!我还在开头添加了一行“DelVar Str0”(我使用了 Str0 而不是 Str1),这样就不会延续之前的 Str0 值——以防万一。
    • DelVar 不是必需的,因为它只能用 ON 按钮跳过 Input 命令,这会终止程序。
    【解决方案3】:

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

    :If A=IPPI
    

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

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

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

    【讨论】:

    • 谢谢,这似乎是我的问题。 :) 我已经使用字符串变量进行了查找,我似乎只能找到 Equ->String 上的一些我无法理解的东西,所以如果你能给我一个例子,我真的很感激!我只需要看看我需要做什么。
    • @FredBarclay 如果您使用 STR1 而不是 A,则无需加引号
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多