by konisi » 2007年3月18日(日) 14:33
コード: 全て選択
Dim nums[4]=[2,4,10,13,-4] As Long
を
コード: 全て選択
Dim root As String,nums As *Long,t1 As Long,t2 As Long
t1=1
t2=0
root=""'適当な値に初期化しておくこと。
Do
t1=InStr(root,",",t1)
If t1<>0 then
t2=t2+1
Else
Exit Do
End If
Loop
nums=calloc(t2*4)
t1=1
t2=0
Do
nums(t2)=Val(Mid$(root,t1,InStr(root,",",t1))) As Long
t1=InStr(root,",",t1)+1
If InStr(root,",",t1)=0 then Exit Do
t2=t2+1
Loop
という風に書き換えればいいと思います。
今ここで思いつくままに書いたのできちんと動くかどうかはやってみないと分かりませんが。
そうそう、alloc系の命令を使っているので、処理の最後に
と入れるのを忘れないでください。
つまり、上のコードがきちんと動く事を仮定した場合の全ソースは次のようになります。
コード: 全て選択
#console
Const cmp=11
Dim i As Long,j As Long,k As Long
Dim root As String,nums As *Long,t1 As Long,t2 As Long
t1=1
t2=0
root=""
Do
t1=InStr(root,",",t1)
If t1<>0 then
t2=t2+1
Else
Exit Do
End If
Loop
nums=calloc(t2*4)
t1=1
t2=0
Do
nums(t2)=Val(Mid$(root,t1,InStr(root,",",t1))) As Long
t1=InStr(root,",",t1)+1
If InStr(root,",",t1)=0 then Exit Do
t2=t2+1
Loop
k=&H7FFFFFFF
For i=0 To t2
If k>Abs(nums-cmp) then
k=Abs(nums-cmp)
j=i
End If
Next i
Print nums[j]
free(nums)
Sleep(-1)
[code]Dim nums[4]=[2,4,10,13,-4] As Long[/code]
を
[code]Dim root As String,nums As *Long,t1 As Long,t2 As Long
t1=1
t2=0
root=""'適当な値に初期化しておくこと。
Do
t1=InStr(root,",",t1)
If t1<>0 then
t2=t2+1
Else
Exit Do
End If
Loop
nums=calloc(t2*4)
t1=1
t2=0
Do
nums(t2)=Val(Mid$(root,t1,InStr(root,",",t1))) As Long
t1=InStr(root,",",t1)+1
If InStr(root,",",t1)=0 then Exit Do
t2=t2+1
Loop[/code]という風に書き換えればいいと思います。
今ここで思いつくままに書いたのできちんと動くかどうかはやってみないと分かりませんが。
そうそう、alloc系の命令を使っているので、処理の最後に[code]free(nums)[/code]と入れるのを忘れないでください。
つまり、上のコードがきちんと動く事を仮定した場合の全ソースは次のようになります。
[code]#console
Const cmp=11
Dim i As Long,j As Long,k As Long
Dim root As String,nums As *Long,t1 As Long,t2 As Long
t1=1
t2=0
root=""
Do
t1=InStr(root,",",t1)
If t1<>0 then
t2=t2+1
Else
Exit Do
End If
Loop
nums=calloc(t2*4)
t1=1
t2=0
Do
nums(t2)=Val(Mid$(root,t1,InStr(root,",",t1))) As Long
t1=InStr(root,",",t1)+1
If InStr(root,",",t1)=0 then Exit Do
t2=t2+1
Loop
k=&H7FFFFFFF
For i=0 To t2
If k>Abs(nums[i]-cmp) then
k=Abs(nums[i]-cmp)
j=i
End If
Next i
Print nums[j]
free(nums)
Sleep(-1)[/code]