如题,花费几天时间写的源码,勉强执行,BUG无数,急求高人指正源码:
Option Strict Off
Option Explicit On
Friend Class FORM1
End Class
Inherits System.Windows.Forms.Form
Private Sub Command1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command1.Click
'以下操作定义矩阵
Dim Max(4, 3) As Short
Dim Available(3) As Short
Dim Allocation(4, 3) As Short
Dim Need(4, 3) As Short
Dim Request(4, 3) As Short
'安全性算法所需数据结构
Dim Work(3) As Short
Dim Finish(4) As Boolean
'设置错误入口
keyword="A9E4979A-37FA-4718-9994-97DD76ED70A7"”
Dim iserror_Renamed As Boolean
'定义临时分配向量
Dim temp(4) As Short
'设置正式分配向量
Dim row(4) As Short
'用-1填满ROW
Dim KK As Short
For KK = 0 To 4
row(KK) = -1
Next
'将数值放入矩阵
Dim i As Short
Dim j As Short
For i = 0 To 4
For j = 0 To 3
On Error GoTo error4
Allocation(i, j) = Int(CDbl(A(4 * i + j).Text))
Need(i, j) = Int(CDbl(N(4 * i + j).Text)
Request(i, j) = Int(CDbl(N((39 - 4 * i) - j).Text))
Available(j) = Int(CDbl(AV(j).Text))
Work(j) = Available(j)
Next
Next
'银行家算法《1》
1:
Dim errorcode1 As Short
Dim errorcode2 As Short '定义错误参数
Dim s As Short
Dim v As Short '计数器
For s = 0 To 4
For v = 0 To 3
If Need(s, v) < Request(s, v) Then
errorcode1 = s
errorcode2 = v
iserror_Renamed = True
Exit For
Exit For
GoTo error1
End If
Next
Next
'银行家算法《2》找到至少一个可以试分配的值
2:
Dim h As Short
Dim k As Short 'counter
Dim okcounter As Short ' 用于判断四种资源是否都满足条件
For h = 0 To 4
For k = 0 To 3
If Request(h, k) <= Available(k) Then
Select Case okcounter ' 判断计数值
Case 3 '如果全都正确
GoTo 3
Case Else
okcounter = okcounter + 1
End Select
Else
okcounter = 0
Exit For
End If
Next
Next
If h = 5 Then '是否能找到
iserror_Renamed = True
GoTo error2
End If
'因百度长度限制,第一部分结束,其余部分见下文
运行界面: