我希望能够打印出L1直到Lk (列表在ti-84中),对于一些任意的数字k。
ti-basic中的列表本质上是一维数组,用于将实数或复数存储到它们的每个元素中。
下面我做了一个名为L1的列表...L3 (不是内置的,实际上可以通过键入LL1,...LL3)
我会向你展示一些我尝试过的东西,等等。
设L5 = {5,5,5}
如果我尝试下面的代码片段:
PROGRAM: ITRTLST
:ClrHome
:Disp LL1
:For(J,1,3
:Disp J
:Disp LL5
:End此代码输出:
1
{5,5,5}
2
{5,5,5}
3.
{5,5,5}
注意: LL5中的第一个'L‘是一个标记(可通过按2nd+LIST(STAT) OPS B:访问)
但是,如果我尝试以下代码片段:
PROGRAM: ITRTLST
:ClrHome
:Disp LL1
:For(k,1,3
:Disp J
:Disp LLk
:End我得到错误:未定义
这是因为它认为'LLK‘是一个列表名称,而不是LL1,LL2,LL3
我们可以看到,如果我让LLK = {1,2,3},那么上面的代码输出
1
{1,2,3}
2
{1,2,3}
3.
{1,2,3}
发布于 2015-05-24 06:34:52
这是可以做到的,但这是一件痛苦的事情,而且可能会非常缓慢。
尝试此代码,将Max替换为一个数字:
:ClrHome
:For(I,1,[Max])
:"Convert I into a string, this is slow
:I/10→D
:sub("0123456789",10*fPart(D)+1,1)→Str1
:int(D)→D
:While D>0
:D/10→D
:sub("0123456789",10*fPart(D)+1,1)+Str1→Str1
:int(D)→D
:End
:"Display the I'th list
:Disp expr("ʟL" + Str1)
:End请注意,以"开头的行只是注释,可以删除。
发布于 2014-10-14 10:31:32
在TI-Basic中无法做到这一点。正如无法从字符串"X"转到变量X的内容一样,也无法从一个数字转到名称中包含该数字的列表。
如果您想要存储数据的二维数组,TI-Basic确实有matrices,尽管与列表相比,它们有一些限制(特别是,您不能创建命名矩阵)。如果你需要更复杂的数据结构,你可能已经达到了这种语言的极限。
发布于 2015-01-27 09:59:13
这是一个非常难看的(可能也是唯一的)方法,但是可以通过运行一组If命令来实现。
例如,
Disp ʟL1
If K≥2
Disp ʟL2
If K≥3
Disp ʟL3
If K≥4
Disp ʟL4
If K≥5
Disp ʟL5以此类推。
编辑:我不知道你是否还需要这个问题的答案,但我找到了一种方法来做你想做的事情。尽管如此,它仍然非常混乱。
Str0 (您可以从以下几种方式中选择:将该数字与列表名称一起转换为link1。例如,使用expr(.对字符串执行"ʟL" + Str0 → Str0.
正如我所说的,这非常丑陋,而且所有这些数字到字符串的转换都不可能太高效,所以您最好为每个条件复制粘贴一堆If语句。
或者,您可以将正在使用的所有列表压缩为一个大列表,并将每个列表的起始位置存储在另一个列表中。然后,您可以使用seq(命令从大的压缩列表中提取您想要的任何子列表。
https://stackoverflow.com/questions/26351675
复制相似问题