1
以下のコードはNS2で2つのノード間の距離を計算し、リスト "nbr"に入れます。そのリストを値 "d"のように昇順に並べ替えて、それをさらに使用するためにリストに格納したいのですが、それはlsort
コマンドを使用しましたが、同じリストを私に与えています。 助けてくださいtclのリストをソートすることができません
コード:。
proc distance { n1 n2 nd1 nd2} {
set x1 [expr int([$n1 set X_])]
set y1 [expr int([$n1 set Y_])]
set x2 [expr int([$n2 set X_])]
set y2 [expr int([$n2 set Y_])]
set d [expr int(sqrt(pow(($x2-$x1),2)+pow(($y2-$y1),2)))]
if {$d<300} {
if {$nd2!=$nd1 && $nd2 == 11} {
set nbr "{$nd1 $nd2 $x1 $y1 $d}"
set m [lsort -increasing -index 4 $nbr]
puts $m
}
}
}
for {set i 1} {$i < $val(nn)} {incr i} {
for {set j 1} {$j < $val(nn)} {incr j} {
$ns at 5.5 "distance $node_($i) $node_($j) $i $j"
}
}
出力:
{1 11 305 455 273}
{4 11 308 386 208}
{5 11 378 426 274}
{7 11 403 377 249}
{8 11 244 405 215}
{9 11 256 343 154}
{10 11 342 328 172}
{12 11 319 192 81}
{13 11 395 196 157}
{14 11 469 191 231}
{15 11 443 140 211}
{16 11 363 115 145}
{17 11 290 135 75}
{18 11 234 121 69}
{19 11 263 60 132}
{20 11 347 60 169}
はhelp.Iのためにあなたをとても感謝1以上question.Iがプロシージャの外に、このソートされたリストにアクセスしたいしています私は '$ ledex $ sortedfile 0 2] a''lassignを" $ sortedfile "の代わりに呼び出さなければなりません。 –
私は距離ファイルを使用しようとしました。私は 'set distance 'の後にもう一つの変数を作成しました。それをグローバルにして、その変数に距離ファイルを割り当てました。しかし、そのファイルをプロシージャのエラーの外で使うと、' file "を読むことができません。 –