是否可以使用菜单输出变量的值(TI-Basic中的命令?虽然菜单(命令非常简单,但我相信它最适合用户。我的节目的特定范围内简单在代码中,我有存储变量的值,然后要输出的菜单内这个数,例如:在TI-BASIC菜单中输出变量(命令
5->A
Menu("SELECT AN OPTION","YOU HAVE A",1)
然而,引号内,则字母A代表输出,有没有一种方法可以使用不同的语法来实现这一点?如果不是,菜单式界面的最佳替代方案是什么?
是否可以使用菜单输出变量的值(TI-Basic中的命令?虽然菜单(命令非常简单,但我相信它最适合用户。我的节目的特定范围内简单在代码中,我有存储变量的值,然后要输出的菜单内这个数,例如:在TI-BASIC菜单中输出变量(命令
5->A
Menu("SELECT AN OPTION","YOU HAVE A",1)
然而,引号内,则字母A代表输出,有没有一种方法可以使用不同的语法来实现这一点?如果不是,菜单式界面的最佳替代方案是什么?
是的,它是possi BLE。问题是TI-Basic并不真正支持将数字合并到字符串中(大多数脚本语言都有很好的字符串解析)。你可以这样做:
5->A
Menu("SELECT AN OPTION","YOU HAVE"+"2 COOKIES",1)
这将字符串“你有”和“2个COOKIES”组合成“你有2个COOKIES”,但如果您尝试"NUM"+5
它会给你某种类型的错误,因为字符串和号码不能合并。
的解决方法,以这个(这是很乏味的代码质量段做)是这样的:
"? //this is to store a string in the Ans variable
For(X,1,1+int(log(N //loop for the number of digits of the number
sub("",iPart(10fPart(N/10^X))+1,1)+Ans //this line pretty much converts
the digit in question of the number (X) to another number, and then sub allows it
to select that number from a string (e.g. sub("0123",3,1) will output 2). Really
I have no idea about the math behind actually getting the digit in question.
End
sub(Ans,1,length(Ans)-1→Str1 //output all except the first character of the
string because it is a placeholder "?" from the frist line.
[请注意,这绝对不是一个数字转换为字符串的唯一途径,但我觉得它是有史以来发现的最快,最干净的。此外,这种方法仅适用于INT数字(非十进制),并使其与negitives工作,你只需要改变1+int(log(A
到1+int(log(abs(A
]
就像我说的,我不知道怎么iPart(10fPart(N/10^X))+1
实际工作,但正如我所说的,它只输出比所讨论数字的值高1的数字。 (1更高,因为0将字符串中的一个点作为项目1)。
不管怎么说,对你的完整代码会是这样的:
5->A
"?
For(X,1,1+int(log(A
sub("",iPart(10fPart(N/10^X))+1,1)+Ans
End
Menu("SELECT AN OPTION","YOU HAVE "+sub(Ans,1,length(Ans)-1),1)
TI-基本是这样的小瑕疵(其余为缺乏功能等)相当薄弱,但不管其一个有趣的语言代码英寸
编辑: 我也看到你问替代方法,所以继承人一些。 你总是可以使用输出(或文本(命令分别绘制到主屏幕/ graphscreen,但这要求你写一个完整的菜单程序的一个小优势,这是你可以做的东西一样:
5->A
Output(1,1,A
无论你喜欢什么样的位置,都不需要把整个一团转换成一个字符串。如果数字是单独的,它会显示为“数字”,但问题出现在你试图将它与一个字符串合并的地方(如字符串“你有”) 因此,即使一个菜单,你可以这样做:
5->A
Menu("SELECT AN OPTION",A,1)
但这不是太有用,因为没有描述什么是价值。
如果你有一个TI-84 + CE,您可以使用toString()命令,然后串联的字符串,像这样:
5->A
toString(A->Str1
Menu("SELECT AN OPTION","YOU HAVE "+Str1,1