前提・実現したいこと
拡散方程式を差分法で解くc言語を使ったプログラムで時間と空間の3次元のグラフを出したくてファイル入力しています。(グラフはgnuplotでだしてます)
エディタはvscodeでコンパイラはgccを使っています。
このプログラムではコンパイルが通るのですが実行したときにprintfやfprintfが出力されません。(exeファイルはできています)
エラーメッセージが出ないので解決法が分からず質問させていただきました。
どなたか回答お願いします<(_ _)>
発生している問題・エラーメッセージ
printf("%lf\n", tx[n][x]); fprintf(fp, "%d %lf %lf\n", x-500, t, tx[n][x]); コンパイルは通るのにこの二つの行が実行されない
該当のソースコード
c言語 # include <stdio.h> # include <math.h> int main(void){ double U[1001], dU[1001]; int x=0; int n=0; double t=0; double tx[100001][101];//U for(n=0; n<100000; n++){ for(x=0; x<100; x++){ tx[n][x]=0; } } double dt = 0.1; double dx = 1; double D = 1; double a = dt * D / (dx*dx); double end=100; FILE *fp; fp = fopen("aiueo.dat", "w"); /* 初期条件 */ for (x=0; x<=1000; x++) U[x] = exp(-(x-500.0) * (x-500.0) / 200); /* 境界条件 */ //U[0] = 0; U[100] = 0; for (t=0; t<end; t=t+dt){ for(n=0; n<(int)end/dt; n++){ for (x=1; x<=999; x++){ dU[x] = a * (U[x+1]-2*U[x]+U[x-1]); U[x] = U[x]+dU[x]; tx[n][x] = U[x]; } } } for(n=0; n<(int)end/dt; n++){ tx[n][0]=tx[n][1]; tx[n][1000]=tx[n][999]; } /* 結果の出力 */ for(t=0; t<end; t=t+dt){ for(n=0; n<(int)end/dt; n++){ for (x=0; x<=1000; x++){ printf("%lf\n", tx[n][x]); fprintf(fp, "%d %lf %lf\n", x-500, t, tx[n][x]); } } } fclose(fp); return 0; }
試したこと
試しに上の行のほうにprintfでAを出力しようとしても出力はされませんでした
二次元配列をあまり使ったことがなかったのでそこが間違っているような気もします・・・
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/12 05:58