我正在尝试找到最大数量。方阵的对角线元素(以Sub changeBold()
Dim r As Range, rng As Range
Dim tmp As Variant, i As Long, p As Long
'Set rng = Application.Range("Auswertung!A1:D100")
Set rng = Application.Range("sheet6!A2:A5")
For Each r In rng.Cells
p = 0
tmp = Split(r.Text, "!")
r = Join(tmp, vbNullString)
For i = LBound(tmp) To UBound(tmp) - 1 Step 2
With r.Characters(p + Len(tmp(i)) + 1, Len(tmp(i + 1)))
.Font.Bold = True
.Font.Color = vbRed
End With
p = p + Len(tmp(i)) + Len(tmp(i + 1))
Next i
Next r
End Sub
矩阵为例;假设2x2
)。
我的逻辑基于比较n = 2
和[i][i]
(对角矩阵的第一个元素与下一个对角元素比较)。
示例输入:
[i + 1][i + 1]
2
示例输出:
首先我们打印出完整的矩阵:
1 2 3 4
1 2
然后我们仅打印对角线元素:
对角元素:3 4
1
最大对角矩阵元素:4
-这是我不确定为什么弄乱的地方。在这种情况下,最大对角线元素应该为4206628
。
4
答案 0 :(得分:1)
问题似乎来自else max = MAT[i + 1][i + 1]
。由于并非总是定义MAT[i + 1][i + 1]
(想象i = 1
时,您超出了数组长度),因此从内存中读取一个随机值。我要解决此问题的方法是更改更改max
值的条件。
if (MAT[i][i] > max) // replacing max when the current value is bigger
{
max = MAT[i][i];
}
// else not necessary
如果数组用负数填充,则无法使用此代码段,因为max
已初始化为0
。