Cには新しいので、私は3対角行列を作るための少しのコードを書いた。しかし、この行列は初期化と視覚化の間で変化するので、私は迷っています。 printfを使って "紙のように"の行列を見ると、インデックスiとjが印刷されてそこに問題があるかどうかがチェックされますが、明らかにそうではありません。私はA [2、2]が2から-1にどのように変化するのか理解していません、あなたは私を助けてくれますか? ここで私が持って出力されます:私のコードは次のように見えますが私のマトリックスは、可視化と割り当てで同じではありませんか?
[0][0]: 2.000000 [0][1]: -1.000000 [0][2]: 0.000000 [0][3]: 0.000000
[1][0]: -1.000000 [1][1]: 2.000000 [1][2]: -1.000000 [1][3]: 0.000000
[2][0]: 0.000000 [2][1]: -1.000000 [2][2]: 2.000000 [2][3]: -1.000000
[3][0]: 0.000000 [3][1]: 0.000000 [3][2]: -1.000000 [3][3]: 2.000000
[0][0]: 0.000000 [0][1]: 0.000000 [0][2]: -1.000000 [0][3]: 2.000000
[1][0]: 0.000000 [1][1]: 0.000000 [1][2]: -1.000000 [1][3]: 2.000000
[2][0]: 0.000000 [2][1]: 0.000000 [2][2]: -1.000000 [2][3]: 2.000000
[3][0]: 0.000000 [3][1]: 0.000000 [3][2]: -1.000000 [3][3]: 2.000000
は:
float **A;
int i, j = 0;
A_row = (float *)malloc(N * sizeof(float));
A = (float **)malloc(N * sizeof(float *));
for (i = 0; i < N; i++){
A[i] = A_row;
}
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
A[i][j] = 0.;
if(i == j){A[i][j] = 2.;}
else if(i == j-1) {A[i][j]=-1;}
else if(i == j+1) {A[i][j]=-1;}
printf("[%d][%d]: %f ", i, j, A[i][j]);
}
printf("\n");
}
//check A
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
printf("[%d][%d]: %f ", i, j, A[i][j]);
}
printf("\n");
}
私はトラブルのために、本当に残念です。
else if(i == j + 1){A [i] [j] = - 1;} 'を書くことは、実際にはコードを実際には読みにくいものにしてしまいます。 –