我知道在TI-BASIC中,惯例是尽可能地优化并保存尽可能多的位(这是非常有趣的,我承认).
例如,
DelVar Z
Prompt X
If X=0
Then
Disp "X is zero"
End //28 bytes
Run Code Online (Sandbox Code Playgroud)
会被清理干净
DelVar ZPrompt X
If not(X
"X is zero //20 bytes
Run Code Online (Sandbox Code Playgroud)
但这种方式优化代码实际上有所作为吗?它明显运行得更快还是节省内存?
这是我计算两个数字a和gcd的函数b.当我使用Prgm和EndPrgm时,它工作正常.但是,它在创建函数时不断弹出一条错误消息"功能或当前表达式无效":(.有什么想法吗?
gcd(a, b )
Func
If a>b Then
a->t
b->a
t->b
EndIf
While b#0
a->t
b->a
mod(t, b)->b
EndWhile
Return a
EndFunc
Run Code Online (Sandbox Code Playgroud) 我在我的图形计算器上运行了一个测试以检查浮点错误,经过四十八小时的完全和完全随机后,计算器没有损失一位数的精度。
TI 如何解决这个问题?
您好,我正在尝试将此代码转换为TI-BASIC。我在如何将for循环更改为while循环以及在TI-BASIC中增加数字方面遇到问题。
#include <stdio.h>
int main()
{
int n, i, flag=0;
printf("Enter a positive integer: ");
scanf("%d",&n);
for(i=2;i<=n/2;++i)
{
if(n%i==0)
{
flag=1;
break;
}
}
if (flag==0)
printf("%d is a prime number.",n);
else
printf("%d is not a prime number.",n);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我有一个命令基本上像清除内存,但不擦除程序和设置我喜欢的设置.我发现它虽然做得很好,但它似乎并没有清楚Y=菜单中的方程式.是否有命令或其他方式来实现这一目标?
PROGRAM:CLEAR
:MATHPRINT
:Normal
...
:DiagnosticOn
:ClrDraw
:Clear Entries
:ClrAllLists
:SetUpEditor
:ClrHome
:"
Run Code Online (Sandbox Code Playgroud) 是否可以在另一个需要参数的程序中执行程序?(没有内联)
例如
________________
- PROGRAM:ADD
- :Prompt A,B
- :A+B>C
________________
- PROGRAM:TEST
- :For(I,0,20)
- :Disp (prgmADD (I,I+1))
- :End_________
Run Code Online (Sandbox Code Playgroud)
显然这不是现在的方式,但我希望我明确表达了我的目标.
我在TI-84 Plus的'Else'上收到错误.我无法弄清楚为什么这不起作用.
我正在编写一个GCD程序,就像编写TI计算器一样.它是递归的(或者像TI-BASIC那样递归).
If B=0
Disp A
Else
C->B
B->remainder(A,B)
A->B
prgmGCD2
Run Code Online (Sandbox Code Playgroud) 我的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很新,所以我确定有一个我看不到的简单错误,但此刻我很难过.
由于从技术上讲,有4种循环类型(for,while,repeat和goto / lbl),使用“无限”最快的是哪一种?这是我的意思:
while 1
End
repeat 0
End
lbl 1
goTo 1
for(n, 1, [number large enough to function as practically infinite]
End
Run Code Online (Sandbox Code Playgroud)
其中哪一个是最快的,或者甚至更快?