2013-10-21 17 views
1

是否可以使用菜单输出变量的值(TI-Basic中的命令?虽然菜单(命令非常简单,但我相信它最适合用户。我的节目的特定范围内简单在代码中,我有存储变量的值,然后要输出的菜单内这个数,例如:在TI-BASIC菜单中输出变量(命令

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

然而,引号内,则字母A代表输出,有没有一种方法可以使用不同的语法来实现这一点?如果不是,菜单式界面的最佳替代方案是什么?

回答

2

是的,它是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(A1+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) 

但这不是太有用,因为没有描述什么是价值。

0

如果你有一个TI-84 + CE,您可以使用toString()命令,然后串联的字符串,像这样:

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