2014-05-18 4 views
1

내 타겟은 숫자 n과 n * n 행렬의 요소 (유형 : double)를 읽는 ac 함수를 작성한 후 결과를 얻습니다. 행렬 자체를 곱하기.함수는 매트릭스를 얻은 다음 제곱합니다.

예 :

입력 :

3 
1.0 0.0 0.0 
1.0 1.0 1.0 
0.0 0.0 1.0 

출력 :

1.0 0.0 0.0 
2.0 1.0 2.0 
0.0 0.0 1.0 

I이있다 :

#include <stdio.h> 
#include <stdlib.h> 

void square(){ 
    int n; 
    scanf("%i", &n); 
    double**matrix; 
    matrix=(double**)malloc(n*sizeof(double*)); 
    int i; 
    for(i=0; i<n; i++){ 
     matrix[i]=(double*)malloc(n*sizeof(double)); 
    } 
    int j; 
    for(i=0; i<n; i++){ 
     for(j=0; j<n; j++){ 
      scanf("%d", &matrix[i][j]); 
     } 
    } 
    double**square; 
    square=(double**)malloc(n*sizeof(double*)); 
    for(i=0; i<n; i++){ 
     square[i]=(double*)malloc(n*sizeof(double)); 
    } 
    int k; 
    for(i=0; i<n; i++){ 
     for(j=0; j<n; j++){ 
      square[i][j]=0; 
      for(k=0; k<n; k++){ 
       square[i][j]+=matrix[i][k]*matrix[k][j]; 
      } 
      printf("%d ", square[i][j]); 
     } 
     printf("\n"); 
    } 
} 

int main(){ 
    square(); 
    return 0; 
} 

내 문제가 단지 하나 개의 행을 판독 할 수 있다는 것이다 매트릭스, 그럼 내가 다시 th 임의의 n * n 행렬의 e 제곱. 어쩌면 나는 변수를 나쁜 방식으로 사용하고 있을지 모르겠습니다.

저는 초급자이며 숙제입니다.

도움 주셔서 감사합니다. 나쁜 영어로 유감스럽게 생각합니다!

답변

2

%d 형식은 int의하지 double의 인쇄하고 매트릭스에 저장되는 쓰레기가 발생합니다 double의를 읽고 그것을 사용하려고 스캔 &에 사용됩니다. 대신 %f을 사용하십시오.

편집 : 또는 %lf (형식이 대칭이 아님)으로 스캔하려면 %lf으로 지정합니다.

+0

감사합니다. 이제는 전체 행렬을 줄 수는 있지만 결과로 잘못된 행렬을 얻습니다. – Mathiassa

+0

% f에 대한 답이 잘못되었지만 % lf에 맞지 않습니다. – Mathiassa

관련 문제