2014-04-07 3 views
0

누가 내 실수를 말할 수 있습니까?매트릭스의 미지정 n x n

행렬식이 올바르지 않습니다!

나는 종이 조각으로 시험을했는데 그 대답은 정확하다!

나는 Matriz [i + 1] [j] = (Matriz [i + 1] [j] - (Matriz [fila] [j] * Matriz [i + 1] [0]/Matriz [fila] [fila]))) "하지만 내 테스트는 정확합니다.

#include <iostream> 
#include <stdio.h> 

using namespace std; 

class Matriznxm{ 

private: 

    int n,m; 
    float **Matriz; 

public: 


    Matriznxm(int f, int c){ 

     n = f; 
     m = c; 
     Matriz = new float *[n]; 

      for (int i=0; i<n; i++){ 

       Matriz[i]=new float [m]; 
      } 

     for(int i=0; i<n; i++){ 

      for(int j=0; j<m; j++){ 

       Matriz[i][j]=0.0; 

      } 

     } 
    } 


    void llenarMatriz(){ 

     for(int i=0; i<n; i++){ 

      for(int j=0; j<m; j++){ 

       cout << "\nMatriz ["<<i+1<<"]["<<j+1<<"]: "; 
       cin >> Matriz[i][j]; 

      } 

     } 

    } 

    void mostrarMatriz(){ 

     for(int i=0; i<n; i++){ 


      for(int j=0; j<m; j++){ 


       cout << Matriz[i][j]<< " "; 

      } 
      cout << "\n"; 
     } 

    } 


    int determinante(){ 

     float det = 1.0; 
     int fila = 0; 


     while(fila < n-1){ 

      for(int i=fila; i<n-1; i++){ 

       for(int j=fila; j<m; j++){ 


        Matriz[i+1][j] = (Matriz[i+1][j] - (Matriz[fila][j]*(Matriz[i+1][0]/Matriz[fila][fila]))); 

       } 

      } 


      fila++; 

     } 


     for (int i=0; i<n; i++){ 

      det= det * Matriz[i][i]; 

     } 




     return det; 
    } 

}};() {

int n,m; 

cout<<"\nNumero de Filas y Columnas: "; 
cin >> n; 
cout << "\n\n\n"; 
m=n; 

Matriznxm m1(n,m); 

m1.llenarMatriz(); 
m1.mostrarMatriz(); 

cout << "\nEl determinante es: "<< m1.determinante() <<"\n\n"; 
m1.mostrarMatriz(); 



return 1; 

} 올바른 답

+1

는 예 무엇이 입력이고 무엇이 출력이란 메인 INT

입니까? – 4pie0

+0

알고리즘, 브레이크 포인트 및 단계의 각 단계에서 값을 계산하여 해당 값을 확인하고 오류가 발생한 위치를 찾아야합니다. – Aesthete

+0

당신은 mxn이 아닌 nxm 행렬을 가정 할 때만 이것이 올바른 공식이라는 것을 알고 있습니까? – 4pie0

답변

0
#include <iostream> 
using namespace std; 
int main() 
{ 
    int siz; 
    cout<< "enter the size of you matrix AxA\nA = "; 
    cin >>siz; 
    int mat[siz][siz],rez=0,rezA=1,rezB=1; 
    for(int i=0;i<siz;i++) 
     for(int j=0;j<siz;j++) 
      cin >> mat[i][j]; 
    for(int t=0;t<siz;t++){ 
     for(int i=0;i<siz;i++) 
     { 
      rezA = rezA *mat[i][i+t>siz-1?(i+t-siz):i+t]; 
      rezB = rezB *mat[i][siz-t-1-i<0?(2*siz-t-1-i):(siz-t-1-i)]; 
     } 
     rez = rez + (rezA - rezB); 
     rezA =rezB = 1; 
    } 
    cout <<endl<<"The Determinat is : "<<rez; 
    return 0; 
}