私はCに非常に慣れていないため、次のことに問題があります。配列を初期化します。
double Cx[101];
for(int i=0; i<101; i++){
Cx[i]=-5+i*0.1;
}
double Q[2][101];
double y[101];
メインメソッドの外に次の関数があります。
double InitHeight(double g, double dx, double x){
return 3;
}
double InitMom(double g, double dx, double x){
return 2;
}
double plainTopo(double x){
return x*10;
}
さて、メインメソッドでは、次のことを行います。
double g=1;
double dx=0.1;
for(int i=0; i<101; i++){
Q[1][i] = InitHeight(g,dx,Cx[i]);
Q[2][i] = InitMom(g,dx,Cx[i]);
y[i] = plainTopo(Cx[i]);
}
したがって、私の問題は、Cx 配列の元の値が変更されることです。元の Cx の一部を次に示します。
-5.000000
-4.900000
-4.800000
-4.700000
-4.600000
-4.500000
-4.400000
...
コードを実行すると、次のようになります。
Cx[] Q[1][] Q[2][] y[]
2.000000 3.000000 2.000000 20.000000
2.000000 3.000000 2.000000 20.000000
2.000000 3.000000 2.000000 20.000000
2.000000 3.000000 2.000000 20.000000
2.000000 3.000000 2.000000 20.000000
2.000000 3.000000 2.000000 20.000000
Cx 配列が変更される理由は、私の人生ではわかりません。同じ結果で代わりにポインターを使用しようとしましたが、ループで double x = Cx[i] を実行してから x を関数に渡しましたが、再び Cx が変更されました。
どんな助けでも大歓迎です。