'操作系统/最短磁臂寻道时间优先算法//结果出不来。。高手帮我看看吧。想了很久没结果,《分不散 只给一人》,看谁有这能力了```
Shared str1 As String = ""
Shared x As Integer
Shared count As Integer = 0
Shared num(10) As Integer
'`````````````````````````````````````````````````
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim i As Integer
Dim indexmin As Integer = 0
Dim T(10) As Integer
Dim a, b, c As Integer
Dim str As String = "" a = count
While a <> 0
For i = 0 To a - 1 '把相减的两个数放入到另一数组中,取正数(好像有个mod)
If num(i) - x <= 0 Then
T(i) = -(num(i) - x)
If num(i) - 1 >= 0 Then
T(i) = num(i) - x
End If
End If
Next i indexmin = 0 For j = 0 To a - 1 '取到最近磁道下标
If T(j + 1) < T(j) Then
indexmin = j + 1
End If
Next j str = str & CStr(num(indexmin)) & " " '一个一个存入到字符串中
x = num(indexmin) '设置磁臂到达位置X For i = indexmin To a - 1'删除已比较的磁道
num(indexmin) = num(indexmin + 1)
Next i
a = a - 1
End While
TextBox3.Text = str End Sub也在这里说下这个算法,开始给定一个数X即磁臂开始位置,再给几个磁道,即num(10)
要找到一个离这个X最近的磁道,再找下一个离现在磁臂最近的磁道`(现在的是上次找到的磁道位置)``就这样。
VB不会,多多指教```
Shared str1 As String = ""
Shared x As Integer
Shared count As Integer = 0
Shared num(10) As Integer
'`````````````````````````````````````````````````
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim i As Integer
Dim indexmin As Integer = 0
Dim T(10) As Integer
Dim a, b, c As Integer
Dim str As String = "" a = count
While a <> 0
For i = 0 To a - 1 '把相减的两个数放入到另一数组中,取正数(好像有个mod)
If num(i) - x <= 0 Then
T(i) = -(num(i) - x)
If num(i) - 1 >= 0 Then
T(i) = num(i) - x
End If
End If
Next i indexmin = 0 For j = 0 To a - 1 '取到最近磁道下标
If T(j + 1) < T(j) Then
indexmin = j + 1
End If
Next j str = str & CStr(num(indexmin)) & " " '一个一个存入到字符串中
x = num(indexmin) '设置磁臂到达位置X For i = indexmin To a - 1'删除已比较的磁道
num(indexmin) = num(indexmin + 1)
Next i
a = a - 1
End While
TextBox3.Text = str End Sub也在这里说下这个算法,开始给定一个数X即磁臂开始位置,再给几个磁道,即num(10)
要找到一个离这个X最近的磁道,再找下一个离现在磁臂最近的磁道`(现在的是上次找到的磁道位置)``就这样。
VB不会,多多指教```
Shared x As Integer
Shared count As Integer = 0
Shared num(10) As Integer你的定义有问题吧
沒有吧,我不懂,shared是靜態的吧
```````````````````````比較的思路 我懂。只是我的實現有點問題,但不知道在哪裏出了錯,
~~~~~~
我改進了。但還是不對
Shared x As Integer
Shared count As Integer = 0
Shared num(9) As Integer
~~~~~~~~~
Dim i As Integer
Dim j, k As Integer
Dim indexmin As Integer = 0
Dim T(9) As Integer
Dim a As Integer
Dim str As String = " " a = count
While a > 0
For i = 0 To a - 1
If num(i) - x <= 0 Then
T(i) = -(num(i) - x)
Else
T(i) = (num(i) - x)
End If
Next i indexmin = 0
For j = 0 To a - 1
If T(j + 1) < T(j) Then
indexmin = j + 1
Else
Continue For
End If
Next j str = str & CStr(num(indexmin)) & " "
x = num(indexmin) For k = indexmin To a - 1
num(k) = num(k + 1)
Next k
a = a - 1
End While
TextBox3.Text = str
Button3.Enabled = False
~~
For j = 0 To a - 2
就這樣好了。但我還不是很清楚是為什麼,問題出在了for循環上了。那個J超了。我是這麼想的
嗯,,分應該給誰呢!!
-- Continue For