2

我希望能够为某个任意数字 k 打印 L1 到 Lk(ti-84 中的列表)。

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}

4

3 回答 3

3

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

试试这个代码,将 [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

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

于 2015-05-23T22:34:51.523 回答
1

这是一个非常丑陋的(可能是唯一的)方法,但可以通过运行一堆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(

正如我所说,这非常难看,所有这些数字到字符串的转换都不会太有效,所以你最好If为每个条件复制粘贴一堆语句。

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

于 2015-01-27T01:59:12.800 回答
0

在 TI-Basic 中没有办法做到这一点。就像没有办法从字符串"X"到变量的内容一样X,也没有办法从一个数字或一个名称中包含该数字的列表。

更新:事实证明您可以使用expr("X")来获取 X 的值。您可以对列表执行相同的操作。

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

于 2014-10-14T02:31:32.497 回答