'操作系统/最短磁臂寻道时间优先算法//结果出不来。。高手帮我看看吧。想了很久没结果,《分不散 只给一人》,看谁有这能力了```
   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不会,多多指教```

解决方案 »

  1.   

    Shared str1 As String = ""
        Shared x As Integer
        Shared count As Integer = 0
        Shared num(10) As Integer你的定义有问题吧
      

  2.   

    Shared num(9) 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
      

  3.   

    唉自已弄出來了。還是自已聰明些,,佩服自已啊,,, For j = 0 To a - 1
    ~~
     For j = 0 To a - 2
    就這樣好了。但我還不是很清楚是為什麼,問題出在了for循環上了。那個J超了。我是這麼想的
    嗯,,分應該給誰呢!!
      

  4.   

    这是VB还是VB.NET?
    -- Continue For