在TI-BASIC菜单中输出变量(命令

时间:2013-10-21 21:09:13

标签: variables ti-basic

是否可以通过菜单输出变量的值(TI-Basic中的命令?虽然菜单(命令非常简陋,但我认为最好在我的程序的特定范围内允许用户简单。)代码,我有一个为变量存储的值,然后想在菜单中输出这个数字。例如:

    5->A
    Menu("SELECT AN OPTION","YOU HAVE A",1)

但是,在引号内,字母A代替输出。有没有办法使用不同的语法来实现这一目标?如果没有,菜单类型界面的最佳替代方案是什么?

2 个答案:

答案 0 :(得分:2)

是的,有可能。问题是TI-Basic并不真正支持将数字合并到字符串中(大多数脚本语言都有很好的字符串解析)。你可以这样做:

5->A
Menu("SELECT AN OPTION","YOU HAVE"+"2 COOKIES",1)

将“你有”和“2个COOKIES”字符串组合成“你有2个饼干”,但是如果你尝试"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("0123456789",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数字(非十进制),并且为了使其适用于否定,您只需将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("0123456789",iPart(10fPart(N/10^X))+1,1)+Ans
End
Menu("SELECT AN OPTION","YOU HAVE "+sub(Ans,1,length(Ans)-1),1)

对于像这样的小缺陷(其他缺乏功能等),TI-Basic相当弱,但不管它是一种有趣的编码语言。

编辑: 我也看到你要求替代方法,所以有些人。 您总是可以使用输出(或文本(分别绘制到主屏幕/图形屏幕的命令,但这需要您编写整个菜单程序。这样做的一个小优点是您可以执行以下操作:

5->A
Output(1,1,A

无论你喜欢什么位置,都不必完全转换成字符串。如果数字是单独的,则显示为“数字”,但问题在于您尝试将其与字符串合并。 (比如字符串“你有”) 因此,即使有菜单,您也可以这样做:

5->A
Menu("SELECT AN OPTION",A,1)

但那不是太有用,因为没有什么能说明价值是什么。

答案 1 :(得分:1)

如果你有一个TI-84 + CE,你可以使用toString()命令,然后连接你的字符串,如下所示:

5->A
toString(A->Str1
Menu("SELECT AN OPTION","YOU HAVE "+Str1,1