2012-11-05 202 views
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++)。

+0

(以不說爲什麼,你是一個小無益誰downvoted) – Rook

+0

你的‘三角形’的閾值固定爲3。當然這個值應該取決於'n'! – Rook

+0

實際上我使用mat [3] [3]來運行測試用例,這就是爲什麼我一直保持在3. – demouser123

回答

2

您在比較mat[i]>mat[j]時可能意味着i>j,與<相同。

+0

mat [i]> mat [j]是指針之間的比較,你確定它有意義嗎? – linello

0

別人是不應該有一個條件

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

簡單地寫:

else {... 
再次

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

簡單地寫:

else {... 

因此,代碼不應該編譯,但一個錯誤,說

「預期令牌;之前{」

將於45:17和60顯示:5