2011-12-18 4 views
0

행렬과 벡터를 곱해야합니다. 치수행렬과 벡터 곱하기

float** M maxtrix : m의 X 않음

나는 파라미터로하는 함수를 쓴 것을 달성한다.

float* V 길이가 n 인 벡터입니다.

float* R 여기에서 이미 할당 된 길이 m의 벡터 결과를 저장합니다.

int m, int n 길이입니다.

void m_mult_v(float** M, float* V, float* R, int m, int n) { 

    int i,j; 

    for (i=0;i<m;i++){ 
     for (j=0;j<n;j++) { 
      R[i]+=(M[i][j]*V[j]); 
     } 
    } 
} 

문제는 내가 가진 결과가 올바른되지 않는 것입니다 :

int i,j; 

for (i=0;i<m;i++){ 
    for (j=0;j<n;j++){ 
      R[i]+=(M[i][j]*V[j]); 
     } 
} 

전체 기능 코드 :

여기 내 코드입니다. -/어떤 생각?

앞으로 답변을 보내 주셔서 감사합니다.

편집

솔루션은 팁에 대한 감사를 발견!

이 코드 부분을 추가하여 R을 모두 0으로 설정했습니다.

for (i=0;i<m;i++){ 
    R[i] = 0; 
} 
+4

전체 코드를 표시하십시오. 샘플 입력, 예상 출력 및 실제 출력도 제공하십시오. 지금까지 해본 디버깅에 대해 알려주십시오. –

+0

@MarekSebera 처음부터 올바른 태그를 추가했는데 왜 내 질문이 다운 그레이드되었는지 알 수 없습니다 ... – TheTime

+2

제공하지 않았기 때문에 downvoted했습니다. 완성 된 * 코드를 사용하거나 입력이 실패하거나 실패하는 방법을 알려주지 않았거나 디버깅을 통해 배운 내용을 Google에 알려주지 않았습니다. –

답변

1

R을 초기화하는 것을 잊었습니까? 스택에 할당되었거나 malloc()으로 할당 된 경우 초기 상태는 정의되지 않습니다.

+0

R이 이미 할당되고 정의되어 있음을 공표하지 않았다. – TheTime

+2

@ 시간 :하지만 모두 0으로 초기화됩니까? –

+1

어떻게 할당 했습니까? 초기화하지 않았습니까? 정답을 제시하지 못하는 컴파일 가능한 코드의 최소한의 예제를 게시하는 것이 어떻습니까? –