tbasic forum
掲示板 => Tiny Basic for Windows => スレッド開設者: kawachi より 2014年 8月 07日 , 午後 05:55:36
-
PC8000でシェルソートと2分木ソートのプログラムを持っていたのですが、捜しても見つからなくなりました。
そこで、VBのプログラムをもとに以下を作成したのですが、エラー出てしまいます。
「エラー:コマンドLETの実行で型の不一致が起きました。(24行,9桁)」
ちょっと手詰まり状態です。
おわかりでしたら、ご教示ください。
乱数を発生させてシェルソートで並べ替えるというものです。
dim Lis(1100)
randomize
for i=0 to 999
b=int(rnd(1)*1000+1)
print using "######";b;
lis(i)=b
next
print
print
print"---------------------------------------"
print
print
Total=1000
hajime=Timer
rem VBのプログラムをもってきました。
Offset = Total / 2
Do While Offset > 0
Limit = Total - Offset
Do
Switch = False
For Loop1 = 0 To Limit
If Lis(Loop1) > Lis(Loop1 + Offset) Then
Tmp = Lis(Loop1)
Lis(Loop1) = Lis(Loop1 + Offset)
Lis(Loop1 + Offset) = Tmp
Switch = True
Limit = Loop1 - Offset
End If
Next Loop1
Loop While Switch
Offset = Offset / 2
Loop
for i=1 to 1000
print using"######";lis(i);
next
print
print
owari = Timer
Print Round(owari-hajime,2);"秒"
tiny basicでプログラムがありましたら教えていただけないでしょうか。
よろしくお願いいたします。
-
こんばんは,
> 「エラー:コマンドLETの実行で型の不一致が起きました。(24行,9桁)」
Switch = False
エラーはこの部分です。
今の場合,Switchは普通数値変数になります。
False はtbasic では偽を意味するBoolean 定数ですから,型の不一致になります。
SwitchをBooleanにするには,
Dim Switch as Boolean
と宣言すれば可能です。
> tiny basicでプログラムがありましたら教えていただけないでしょうか。
sort に関しては,配布の sample\Sort フォルダの中にShell-Sort.tbtがあります。
お試しください。