50分求解类似冒泡的问题!

sync2004 2004-12-09 07:28:08
有一个冒泡的问题:在RICHTEXTBOX中有N列数值,求出每列的最大值,然后每个数值都除以该列的最大值。
比如:1 2 3
4 5 6
2 5 9
7 8 3
则要实现:第一列中每个数除以7,第二列每个数除8.....
1请问怎么实现???
...全文
187 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
northwolves 2004-12-09
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim temp() As String, temp2() As String, a() As String, b() As Integer, rows As Integer, cols As Integer
temp = Split(Text1.Text, vbCrLf)
rows = UBound(temp)
For i = 0 To rows
temp2 = Split(temp(i), " ")
cols = UBound(temp2)
ReDim Preserve a(rows, cols)
ReDim Preserve b(cols)
For j = 0 To cols
a(i, j) = Val(temp2(j))
If Val(a(i, j)) >= b(j) Then b(j) = a(i, j)
Next
Next
For i = 0 To rows
For j = 0 To cols
temp2(j) = Format(Val(a(i, j)) / b(j), "0.00")
Next
temp(i) = Join(temp2, " ")
Next
Text1.Text = Join(temp, vbCrLf)
Erase temp
Erase temp2
Erase a
Erase b
End Sub

Private Sub Form_Load()
Text1.Text = "1 2 3" & vbCrLf & "4 5 6" & vbCrLf & "2 5 9" & vbCrLf & "7 8 3"
End Sub
AprilSong 2004-12-09
  • 打赏
  • 举报
回复
计算那里没有考虑最大数为0的情况…… - -b
AprilSong 2004-12-09
  • 打赏
  • 举报
回复
烂方法来了……

Private Sub Form_Click()
Dim i As Integer
Dim j As Integer
Dim m As Integer
Dim tS As String
Dim tSA() As String
Dim tSB() As String
Dim tN() As Single

With RichTextBox1
tS = Trim(.Text)

'格式处理……
Do
i = Len(tS)
tS = Replace(tS, " ", " ")
Loop While i > Len(tS)
tS = Replace(tS, vbCrLf, "|")
tS = Replace(tS, " ", ",")
tS = Replace(tS, "|,", "|")
Do While Right(tS, 1) = "|"
tS = Left(tS, Len(tS) - 1)
Loop

'分割……
tSA = Split(tS, "|")
tSB = Split(tSA(0), ",")
ReDim tN(UBound(tSA), UBound(tSB)) As Single

For i = 0 To UBound(tSA)
tSB = Split(tSA(i), ",")
For j = 0 To UBound(tSB)
tN(i, j) = Val(tSB(j))
Next
Next

'数组……
tS = ""
For i = 0 To UBound(tN, 1)
For j = 0 To UBound(tN, 2)
tS = tS & tN(i, j) & " "
Next
tS = tS & vbCrLf
Next
.Text = .Text & vbCrLf & "====Array=================================" & vbCrLf & tS

'计算……
For i = 0 To UBound(tN, 2)
m = 0
For j = 0 To UBound(tN, 1)
If m < tN(j, i) Then m = tN(j, i)
Next
For j = 0 To UBound(tN, 1)
tN(j, i) = tN(j, i) / m
Next
Next

'结果……
tS = ""
For i = 0 To UBound(tN, 1)
For j = 0 To UBound(tN, 2)
tS = tS & Format(tN(i, j), "0.000") & " "
Next
tS = tS & vbCrLf
Next
.Text = .Text & vbCrLf & "====Result================================" & vbCrLf & tS

End With
End Sub
qingyun67 2004-12-09
  • 打赏
  • 举报
回复
用数组实现^-^
northwolves 2004-12-09
  • 打赏
  • 举报
回复
建议用FLEXGRID,或者就用楼上所指的烂方法实现
xinyuan_z 2004-12-09
  • 打赏
  • 举报
回复
烂方法:
把数字拿出来放到数组,然后再……
aohan 2004-12-09
  • 打赏
  • 举报
回复
把数据填到数据库中,容易实现
sync2004 2004-12-09
  • 打赏
  • 举报
回复
请大哥出手帮个忙,小弟真的感激不尽!
zgvslch 2004-12-09
  • 打赏
  • 举报
回复
要用Split函数分啊,好麻烦啊。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧