0

我已经遇到了这个问题,以找出某个阶的矩阵是上三角矩阵、下三角矩阵还是简单的对角矩阵。我编译了以下代码。它在上三角和对角线部分成功运行,但从未检查下三角条件。

int main()
{

    int mat[10][10];

    cout<< "\n Enter dimension of square matrix;";

    int n;

    cin>>n;

    cout<< "\n Enter the elements for the matrix :";

    for(int i=0; i< n ; i++)
        for (int j = 0; j< n ; j++)
        {
            cout<<"\n Element for positon : " << i+1 << " , " << j+1 << ":";
            cin>> mat[i][j];
        }

    int flag1=0,flg2=0,flg3=0;

    for(int i=0; i< n ; i++)
        for (int j = 0; j< n ; j++)
        {
            if(i == j)
                if(mat[i][j] == 0)
                {
                    flag1 = 1;
                    break;
                }

            if(i!= j)
            {
                if(mat[i][j]!=0)
                {
                    flag1 = 1;
                    break;
                }
                else if(mat[i]>mat[j] && mat[i][j]==0)
                {
                    flg2=flg2+1;
                }
                else (mat[i]<mat[j] && mat[i][j]==0)
                {
                    flg3=flg3+1; 
                }
            }
        }

    if(flag1== 0)
    {
        cout<< "\n A Diagonal Matrix .";
    }
    else if(flg3==3)
    {
        cout<<"\n Lower Triangular Matrix.";
    }
    else (flg2==3)
    {
        cout<<"\n Upper Triangular matrix.";
    }

    cout<<"\n\n Matrix :\n";
    for(int i=0; i< n ; i++)
    {
        for (int j = 0; j< n ; j++)
            cout<< mat[i][j] << " ";

        cout<< endl;
    }
    getch();
}

我正在使用 GCC 编译器(Dev C++)。

4

2 回答 2

2

您在比较mat[i]>mat[j]时可能意味着i>j,对于<.

于 2012-11-05T13:51:57.120 回答
0

else 不应该有条件

else (mat[i]<mat[j] && mat[i][j]==0) {...}

只需写:

else {...

再次在:

else (flg2==3) {...}

只需写:

else {...

所以代码不应该编译,而是一个错误说

“预期令牌;在 { 之前”

将在 45:17 和 60:5 显示

于 2017-09-30T03:33:39.680 回答