在ti-84 ti-basic中打印出一组列表

时间:2014-10-14 02:18:51

标签: arrays ti-basic

我希望能够将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

我得到ERR:UNDEFINED

这是因为它认为'LLK'是列表名而不是LL1,LL2,LL3

如果我让LLK = {1,2,3}然后上面的代码输出

,我们可以看到这个

1

{1,2,3}

2

{1,2,3}

3

{1,2,3}

3 个答案:

答案 0 :(得分:1)

这可以做到,但这很痛苦,而且可能会很慢。

尝试使用此代码,将[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

请注意,以"开头的行只是注释,可以删除。

答案 1 :(得分:0)

TI-Basic无法做到这一点。就像没有办法从字符串"X"转到变量X的内容一样,没有办法从一个带有该数字的列表中去它的名字。

如果要存储二维数据数组,TI-Basic确实有matrices,尽管它们与列表相比有些限制(特别是,您无法创建命名矩阵)。如果您需要一些比这更复杂的数据结构,您可能已经达到了这种语言的极限。

答案 2 :(得分:0)

这是一个非常丑陋(可能是唯一的)方法,但可以通过运行一堆If命令来实现。

例如,

Disp ʟL1
If K≥2
    Disp ʟL2
If K≥3
    Disp ʟL3
If K≥4
    Disp ʟL4
If K≥5
    Disp ʟL5

等等。


编辑:我不知道你是否仍然需要这个问题的答案,但我找到了一种方法来完全按照自己的意愿行事。不过,它仍然非常混乱。

  1. 将您的号码转换为字符串,例如Str0(您可以选择以下几种方式:link1 link2)。

  2. 将该数字与列表名称连接起来。例如,"ʟL" + Str0 → Str0

  3. 使用expr(评估字符串。

  4. 正如我所说,这非常难看,所有这些数字到字符串的转换都不会太高效,所以你可能最好不要复制粘贴一堆{{1}每个条件的语句。

    或者,您可以将您使用的所有列表压缩到一个大列表中,并将每个列表的起始位置存储在另一个列表中。然后,您可以使用If命令从大压缩列表中提取所需的任何子列表。