📄 最优控制.frm
字号:
VERSION 5.00
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 4035
ClientLeft = 60
ClientTop = 345
ClientWidth = 6525
LinkTopic = "Form1"
ScaleHeight = 4035
ScaleWidth = 6525
StartUpPosition = 3 '窗口缺省
Begin VB.TextBox Textresult
Height = 270
Left = 5520
TabIndex = 8
Top = 1200
Width = 975
End
Begin VB.CommandButton Commandresult
Caption = "结果"
Height = 375
Left = 4800
TabIndex = 6
Top = 2760
Width = 1575
End
Begin VB.CommandButton Command3
Caption = "结束"
Height = 375
Left = 4800
TabIndex = 5
Top = 3360
Width = 1575
End
Begin VB.CommandButton Command1
Caption = "系数矩阵"
Height = 375
Left = 4800
TabIndex = 4
Top = 2160
Width = 1575
End
Begin VB.TextBox Textlieshu
Height = 285
Left = 5520
TabIndex = 3
Top = 600
Width = 975
End
Begin VB.TextBox Texthangshu
Height = 285
Left = 5520
TabIndex = 1
Top = 120
Width = 975
End
Begin VB.Label Label5
Caption = "结果"
Height = 255
Left = 4800
TabIndex = 7
Top = 1200
Width = 615
End
Begin VB.Label Label4
Caption = "列数"
Height = 255
Left = 4800
TabIndex = 2
Top = 600
Width = 615
End
Begin VB.Label Label3
Caption = "行数"
Height = 255
Left = 4800
TabIndex = 0
Top = 120
Width = 615
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim a(1 To 20, 1 To 20) As Double
Dim c(1 To 10) As Integer
Private Function finminusq(row1 As Integer, column1 As Integer) As Integer
Dim flag As Integer
Dim i As Integer
i = 0
flag = 1
For j% = 1 To column1 - 1
If a(row1, j) >= 0 Then
i = i + 1
End If
Next j
If i = column1 - 1 Then
flag = 0
End If
finminusq = flag
End Function
Private Function findmincol(row1 As Integer, column1 As Integer) As Integer
Dim min As Integer
Dim j As Integer
Dim temp As Double
temp = a(row1, 1)
min = 1
For j = 1 To column1 - 1
If a(row1, j) < temp Then
temp = a(row1, j)
min = j
End If
Next j
findmincol = min
End Function
Private Function findminrow(row1 As Integer, sertcol As Integer, column1 As Integer) As Integer
Dim max As Integer
Dim i As Integer
Dim temp As Double
temp = a(1, column1) / a(1, sertcol)
max = 1
For i = 1 To row1 - 1
If a(i, column1) / a(i, sertcol) < temp Then
temp = a(i, column1) / a(i, sertcol)
max = i
End If
Next i
findminrow = max
End Function
Private Sub gausecancel(deleterow1 As Integer, insertcol1 As Integer, row1 As Integer, column1 As Integer)
Dim i As Integer
Dim j As Integer
Dim temp1 As Double
temp1 = a(deleterow1, insertcol1)
For j = 1 To column1
a(deleterow1, j) = a(deleterow1, j) / temp1
Next j
For i = 1 To row1
If i = deleterow1 Then
i = i + 1
End If
temp1 = a(i, insertcol1)
For j = 1 To column1
a(i, j) = a(i, j) - a(deleterow1, j) * temp1
Next j
Next i
For i = 1 To row
For j = 1 To column
Print a(i, j);
Next j
Print
Next i
End Sub
Private Sub Command1_Click()
Dim column As Integer
Dim row As Integer
column = Val(Textlieshu.Text)
row = Val(Texthangshu.Text)
Open "D:\a1.txt" For Output As #1
For i% = 1 To row
For j% = 1 To column
temp$ = InputBox$(ch1$ + "请输入矩阵系数", "输入矩阵的对话框", , 100, 4500)
a(i, j) = Val(temp$)
Print #1, a(i, j)
Next j
Next i
Close #1
End Sub
Private Sub Command3_Click()
End
End Sub
Private Sub Commandresult_Click()
Dim flag As Integer
Dim row As Integer
Dim column As Integer
Dim insertcol As Integer
Dim deleterow As Integer
Dim cyclenumber As Integer
column = Val(Textlieshu.Text)
row = Val(Texthangshu.Text)
Open "D:\a1.txt" For Input As #1
For i% = 1 To row
For j% = 1 To column
Input #1, a(i, j)
Print a(i, j);
Next j
Print
Next i
Close #1
flag = finminusq(row, column)
cyclenumber = 0
Do While flag = 1
cyclenumber = cyclenumber + 1
insertcol = findmincol(row, column)
deleterow = findminrow(row, insertcol, column)
Call gausecancel(deleterow, insertcol, row, column)
flag = finminusq(row, column)
Loop
For i% = 1 To row
For j% = 1 To column
Print a(i, j);
Next j
Print
Next i
Textresult.Text = Str(a(row, column))
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -