2017-06-06 7 views
-3

少しプロジェクトを作成する必要がありますが、私は完全にわかりません。私はサイズnの行列Aを与えています。行列Bは行列Aであり、最初の列と最後から2番目の列がゼロになります。私がしたのは行列のゼロ設定、C言語

#include<stdio.h> 
#include<math.h> 
int main() 
{ 
int i,n,j,; 
int tab[n][n]; 
printf("Size of matrix:"); 
scanf("%d",&n); 
for (i = 0; i < n; i++) 
for (j = 0; j < n; j++) 
{ 
    printf("A[%d][%d]=",i,j); 
    scanf("%lf",&tab[i][j]); 
} 
printf("Data:"); 
printf("Matrix A[%d][%d]",n,m); 
} 

私は私の行列を入力する必要がありますと思います。私は次に何をすべきか?私を助けてください。

+1

ヒント: '、私はint型、n個のJでの,;int tab [n] [n]; '、' int tab [n] [n]; 'で使用される' n'の値は何ですか? – chux

+0

真のコンパイル可能なコードを投稿するのに最適です: 'printf("行列A [%d] [%d] "、n、m);' mはどこに定義されていますか? – chux

+0

'int [n]'は非標準ですc。標準であるために、動的サイズの配列が必要な場合は、malloc、freeなどを使用する必要があります – pm100

答えて

0

コードに多くのエラーがあり、変数mが宣言されていない場合、double配列はnが初期化されていないと宣言されます。実行時に(ユーザーが入力した)行列のサイズはわかっているだけなので、動的メモリ割り当て関数を使用して行列のメモリを割り当てる必要があります。

は、このコードを試してみてください。

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

int main(void) 
{ 
    int i, j, n; 
    printf("Size of matrix: "); 
    scanf("%d", &n); 

    int *tab = (int*)malloc(sizeof(int)*n*n); 

    for (i = 0; i < n; i++) 
    { 
     for (j = 0; j < n; j++) 
     { 
      printf("A[%d][%d]=",i,j); 
      scanf("%d",(tab+i*n+j)); 
     } 
    } 

    for (i = 0; i < n; i++) 
    { 
     *(tab+i*n) = 0; 
     *(tab+i*n+n-2) = 0; 
    } 

    //Print tab 
    for (i = 0; i < n; i++) 
    { 
     for (j = 0; j < n; j++) 
     { 
      printf("%d ", *(tab+i*n+j)); 
     } 
     printf("\n"); 
    } 

    return 0; 
} 
関連する問題