我的TI-84 Plus C银版计算器上有一个TI BASIC的小代码,可以根据患者的体重确定正确的药物剂量.例如,如果给予阿司匹林5 mg/kg患者体重(事实并非如此),那么代码应该告诉我给100kg患者服用500mg阿司匹林.但是,该代码正在解决所有可能的药物.这里是:
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
Run Code Online (Sandbox Code Playgroud)
所以在这种情况下,这两种药物是IPPI和NEVO.如果我给患者体重100公斤,并选择IPPI,那么我希望看到
DOSAGE 200
Run Code Online (Sandbox Code Playgroud)
但是,我看到的是
DOSAGE 200
DOSAGE 50
Run Code Online (Sandbox Code Playgroud)
显然两个"if"语句都在运行,即使我只给了一个值(IPPI).[当我设置发生同样的错误A作为NEVO].
我已经尝试将两个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
Run Code Online (Sandbox Code Playgroud)
但这没有任何改变.我对BASIC很新,所以我确定有一个我看不到的简单错误,但此刻我很难过.
您需要更改第二个输入命令,以便将信息存储到字符串而不是数字变量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
Run Code Online (Sandbox Code Playgroud)
或者更简洁:
:Input "PATIENT WEIGHT: ",W
:Input "AGENT NAME: ",Str1
:Disp "DOSAGE:"
:If Str1="IPPI"
:Disp 2W
:If Str1="NEVO"
:Disp .5W
Run Code Online (Sandbox Code Playgroud)