2014-05-22 3 views
0

나는이매트릭스 삼각법 원인 오류 잘못된 형식 인수 단항 마이너스

float **trian(int n, float **Xy) 
    { 
     int i,row,col; 
     float **sign = 1; 
     for (i = 0; i < n; i++) { 
      int max = 0; 

      for (row = i; row < n; row++) 
       if (fabs(Xy[row][i]) > fabs(Xy[max][i])) 
        max = row; 

      if (max) { 
       sign = -sign; 
       float *tmp = Xy[i]; 
       Xy[i] = Xy[max], Xy[max] = tmp; 
      } 

      if (!Xy[i][i]) return 0; 
      row=0; 
      for (row = i + 1; row < n; row++) { 
       float r = Xy[row][i]/Xy[i][i]; 
       if (!r) continue; 

       for (col = i; col < n; col ++) 
        Xy[row][col] -= Xy[i][col] * r; 
      } 
     } 
     return sign; 
    } 

불행하게도이 오류

main.c:74:20: error: wrong type argument to unary minus 

에게 오류

의 라인을 얻을 일상 매트릭스 삼각법에 사용되는 값을 반환이 방법
sign = -sign; 
+0

당신이 조각의 라인을 표시하십시오 수 있습니다


아마도이 같은 뭔가를해야합니까? – Wolf

+0

나는 여기에 이미'float ** sign = 1; '오류가 있다고 의심한다. 왜 컴파일러가 불평하지 않습니까? – Wolf

+0

왜 C가 되나요? 속도? ;) ... 전에 C를 사용한 적이없는 것 같습니다. – Wolf

답변

1

여기에 뭔가가 있습니다.

float **sign = 1; 
.... 
sign = -sign; 

sign 대신 **sign을 사용하셨습니까?

int trian(int n, float **Xy) { 
    ... 
    int sign = 1; 
    ... 
    sign = -sign; 
    ... 
    return sign; 
} 
+0

예이 줄에 오류가 있지만'float ** sign = 1;이라고 쓰면'호환되지 않는 형식 오류 '가 발생합니다. 이걸 수정하는 방법? – AndreaF

+0

'float ** sign'은 포인터 인 지역 변수를 선언합니다 ... – Wolf

+0

''float sign = 1'과'return sign;'에서'float ** sign = 1'을' * 표시;'? – AndreaF

관련 문제