プロが教える店舗&オフィスのセキュリティ対策術

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);
}
}
}

A 回答 (3件)

エクセルにファイル出力するとありますが、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);
}
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/11/19 18:15

No.2の者です。


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

カンマ(,)区切りのテキストファイル(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");
として、コマンドラインからリダイレクトでファイルに出力するのが最も簡単でしょう。
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/11/18 20:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!