• ベストアンサー

C言語 初心者です

Cで計算して出た結果をエクセルに出力するやり方を教えて下さい。 #include<stdio.h> #include<math.h> double V(double x) { double pot=0.0; if (x >-1 && x<1) { pot=-2.0; } return(pot); } double F(double psi, double E,double x) { return(2.*(V(x)-E)*psi); } int main() { double E; int i,j; double psi,psi1,phi,phi1,x,dx; psi=0.01; phi=0.01; scanf("%1f",& E); x=-5.; i=5; dx=pow(10,-i)*10.0; for(j=0;j<pow(10,i);j++) { psi1=psi+phi*dx; phi1=phi+F(psi,E,x)*dx; x=x+dx; psi=psi1; phi=phi1; if((j+1)/5000*5000==j+1) { printf("x=%f phi= %f psi= %f\n",x,phi,psi); } } }

質問者が選んだベストアンサー

  • ベストアンサー
  • kiyohu16
  • ベストアンサー率38% (8/21)
回答No.2

エクセルにファイル出力するとありますが、csv形式(区切りが",")になるものを作りました。 これでエクセルで開けるファイルができると思いますが、実行してみるとphi=1.#INF00,psi=1.#INF00となったことが気がかりです。 プログラムを貼っておきますので、参考にしてください。 -- #include<stdio.h> #include<math.h> double V(double); double F(double,double,double); FILE *f; int main(void) { double E; int i,j; double psi,psi1,phi,phi1,x,dx; psi=0.01; phi=0.01; scanf("%1f",& E); x=-5; i=5; dx=pow(10,-i)*10.0; //ファイルを開く f=fopen("test1.csv","w"); for(j=0;j<pow(10,i);j++) { psi1=psi+phi*dx; phi1=phi+F(psi,E,x)*dx; x=x+dx; psi=psi1; phi=phi1; if((j+1)/5000*5000==j+1) { fprintf(f,"x=,%f ,phi=,%f ,psi=, %f\n",x,phi,psi); } } //ファイルを閉じる fclose(f); return 0; } double V(double x) { double pot=0.0; if (x >-1 && x<1) { pot=-2.0; } return(pot); } double F(double psi, double E,double x) { return(2.*(V(x)-E)*psi); }

mr913
質問者

お礼

回答ありがとうございます。 私はphi=1.#INF00,psi=1.#INF00のようにはなりませんでした。

その他の回答 (2)

  • kiyohu16
  • ベストアンサー率38% (8/21)
回答No.3

No.2の者です。 phi=1.#INF00,psi=1.#INF00が出てしまうなんて余計なことまで書いてしまいましてすみません。多分、私のミスだと思います。

  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.1

カンマ(,)区切りのテキストファイル(CSV形式)で出力すれば Excelでも読み込めます。 >printf("x=%f phi= %f psi= %f\n",x,phi,psi); これを printf("%f,%f,%f\n",x,phi,psi); for文の前に printf ("x,phi,psi\n"); として、コマンドラインからリダイレクトでファイルに出力するのが最も簡単でしょう。

mr913
質問者

お礼

回答ありがとうございました。早速試してみます。

関連するQ&A