私はCで簡単なコードを書いています。このようなコマンドがなくてもループ中に要素値が変化しているという問題があります。最初のループで計算されたすべての要素は、ループの終了後にゼロになります。しかし、2番目以上の番号のループで計算された要素は正しい値を示し、ゼロにはなりません(明らかに)。では、なぜこれらの要素がゼロになったのですか?間違いはどこですか?配列要素の値がC言語でループ中に変化する
毎回u(1,0)
の値を出力しました。
#include <stdio.h> /* Standard Library of Input and Output */
#include <complex.h> /* Standard Library of Complex Numbers */
#include <math.h>
#include <string.h>
#include <stdlib.h>
#define pi 3.141592
int main() {
// Declaration variables
// Integers
int N = 2, Nx = N, Ny = N, i, j; // IMPORTANT GIVE N-1 FOR N
double x[Nx], y[Ny], lengthX = 1.0, lengthY = 1.0;
double complex u[Nx][Ny];
// FOR X DIRECTION
for (i = 0; i <= Nx; i++) {
x[i] = (double)i/(Nx + 1) * lengthX;
//printf("x coordi is %.15f \n", x[i]);
}
// FOR Y DIRECTION
for (j = 0; j <= Ny; j++) {
y[j] = (double)j/(Ny + 1) * lengthY;
//printf("x coordi is %.15f \n", x[i]);
}
for (j = 0; j <= Ny; j++) {
for (i = 0; i <= Nx; i++) {
printf("x coordi is %.15f \n", x[i]);
u[i][j] = sin(2.0 * pi * x[i]) * cos(2.0 * pi * y[j]);
// x[i] = (double)i/(Nx + 1) * lengthX;
printf("u is (i,j) = (%i,%i)\t%.15f\t%f\t%f\n", i, j, u[i][j], x[i], y[j]); //correct
printf("u is (i,j) = (%i,%i)\t element u[1][0] is %.15f \n\n\n", i, j, u[1][0]);
}
printf("\n\n\n End of inside loop (i,j)=(%i,%i) u(1,0) is \t%.15f \n", i, j, u[1][0]);
}
printf("\n\n u is %i\t%i\t%.15f \n\n", i, j, u[1][0]);
printf("\n\n\n\n Why u(1,0) value become zero in the last loop ???????\n");
printf("\n\n\n\n Not only u(1,0) value become zero, but all u(:,0) in the last loop became zero !\n");
//
return 0;
}
'I = 0を設定します。 i <=Nx' => 'i = 0;私はあなたの配列があなたの配列の外側にあるか、次の行に書きます。 –
'for(j = 0; j <= Ny; j ++)'が間違っていれば、配列を 'Ny-1'にしか索引付けできません。 –
多くの感謝ジャン=フランソワ・ファーブルAND天気ヴェーン – STRANGE