首页 > 解决方案 > 如何按用户定义数组大小和元素?

问题描述

我目前正在学习 TCL,但遇到了练习集的问题。思考过程是这样的:

  1. 该脚本将询问数组的大小 (N)。
  2. 用户将输入基于 N 的数组元素。
  3. 该脚本将打印:

    1. 数组的大小
    2. 数组的元素
    3. 数组元素的总和

我一直在寻找一种方法,并找到stdin了一个起点。

[更新] 尝试编码。它可以满足要求,但我认为这可以改进。

array set elements { }
puts "Enter array size: "
gets stdin N
if {($N < 1) || ($N > 10)} {
    puts "Array size invalid."
} else {
    for {set i 1} {$i <= $N} {incr i} {
        puts "Enter element ($i) value: "
        gets stdin value
        set elements($i) "$value" 
        }
    }
    puts "Array size is $N"
    parray elements
    set sum 0
    for {set i 1} {$i <= $N} {incr i} {
        set sum [expr {$sum +$elements($i)} ]
    }
    puts "The sum is $sum"

标签: tcl

解决方案


Tcl 的数组(以及列表和字典)将包含您放入其中的数据量。它们没有您提前声明的固定大小。

要执行 N 次操作,请使用for如下循环:

for {set i 1} {$i <= $N} {incr i} {
    DoTheActionHereForStep $i
}

您将需要使用一些代码来输入 N 的值,并使用更多代码来读取该循环内的值。(您可以使用 获取数组的当前大小array size。)然后使用puts再次将值打印出来,这就是您可以总结这些值的方式:

set sum 0
for {set i 1} {$i <= $N} {incr i} {
    set sum [expr { $sum + $theArray($i) }]
}
# Now $sum is the sum of the values in the array

可以看到,这是前面循环操作在求和问题上的应用。


推荐阅读