C ++是矩阵三角形?

时间:2014-01-24 17:37:46

标签: c++ arrays for-loop matrix triangular

所以我们有一个nxn矩阵(n <= 20)。如果a [i] [j] == 0,当i&gt; j和a [i] [j]!= 0当i&lt; = j ...或... a [i] [j] == 0时i&lt;当i> = j时,j和a [i] [j]!= 0 ...矩阵称为三角形。我想在3x3三角矩阵中看起来像这样

1 1 1     1 0 0 
0 1 1     1 1 0 
0 0 1     1 1 1

这是我的代码:

    bool flag;
    int count = 0;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
        {
            if ((i > j && a[i][j] != 0) || (i <= j && a[i][j] == 0))
            {
                count++;
                break;
            }
        }

    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
        {
            if ((i < j && a[i][j] != 0) || (i >= j && a[i][j] == 0))
            {
                count++;
                break;
            }
        }

    if (count == 2) flag = false;
    else flag = true;
    cout << flag;

现在,关于这个问题 - 我在代码之前给出的矩阵的两个例子应该总是返回1(真),因为它们是定义的三角形,而比如说:

0 1 0
0 0 5
1 3 4

应始终返回0(false),因为它不是三角形。我的问题是,无论我输入什么,出于某种原因它总是返回1(真实)告诉我矩阵是三角形而显然不是。我的问题是我怎么可能解决这个问题?我完全不知道我的错误是什么,虽然我怀疑它与我的计数方法有关,基本上是 - 如果不满足三角矩阵的某些条件 - 打破循环并向计数器添加+1,然后检查它是否是反转的三角形矩阵,如果它仍然不再向计数器添加一个。最后,计数器将为1或2,这将指示矩阵是否为三角形。某处有泄漏,我似乎无法找到它。如果事实证明这一切都是错的,我愿意接受其他方式的建议。

0 个答案:

没有答案