寻找方阵的最大对角线元素

时间:2018-12-17 22:21:17

标签: c matrix

我正在尝试找到最大数量。方阵的对角线元素(以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

1 个答案:

答案 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