- 締切済み
C言語
プログラムをつくっているのですが、エラーをとりのぞけません。ソースをみないと、こたえるのが難しいとおもいますが、よろしくお願いします。 main関数ならびに、void型の関数のすべてのところで次のエラーがでます。「構文エラ-: ';' または ',' が欠落している可能性があります。」 なんですが、なんどみなおしても、これをつけるところがありません。 関数全部にでているので、共通のエラーなのですが、わかりません。 よろしくお願いします。
- みんなの回答 (8)
- 専門家の回答
みんなの回答
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#7に加えて、 void runge0(void) のように引数としてvoidを明示的に書く必要があります。 main(){ の場合は、値を返す必要があります。 値を返さない場合 void main(){ にする
- jacta
- ベストアンサー率26% (845/3158)
fおよびde関数が閉じていません。また、ファイルの最後の}が余分です。
- jacta
- ベストアンサー率26% (845/3158)
> ソースをみないと、こたえるのが難しいとおもいますが、よろしくお願いします。 なかなか、ソースが補足されませんが... > プログラムをつくっているのですが、エラーをとりのぞけません。 とりあえずエラーを取り除きたいだけであれば、現時点でアドバイスできる確実な方法としては、エラーの発生したソースファイルに書かれたすべての文字を削除することだけです。
- Qwerty-36
- ベストアンサー率25% (58/226)
あ、あと、「}」を忘れている場合も、同様のエラーが大量に出ますね。 #「技術者向け」って、いつから「技術者がシロウトの質問に答える」になったんだろうネ(^.-)。
補足
これって技術者専用なの? あと、俺はただの学生です。
- Qwerty-36
- ベストアンサー率25% (58/226)
技術者とは思えない質問ですが、回答します。 最悪の手ですが、エラーの出ている最初の行の上下3行に「;」を付けてください。そして、エラーが出なくなった、もしくはエラーの変わった内容を再度確認してください。 #どうせ、#や、"、;とかを忘れているだけだと思います。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
ソースを補足してください
- jacta
- ベストアンサー率26% (845/3158)
最低限、エラーの発生している箇所だけでも、ソースを見ないとどうしようもありません。
- nnfuji
- ベストアンサー率28% (200/701)
includeされているヘッダファイルも見る必要があります。 特に見る部分は、標準ヘッダファイルではなくユーザーヘッダファイルです。
補足
#include<stdio.h> #include<math.h> #include<stdlib.h> #include<string.h> #define X_min 0 #define X0 20 #define NMAX 30 int ix,icount,imax,node,stop; double a,h,e,e1,sq; double x,y,z,y2,x1, xmax; double u[3001],en[NMAX+1]; double V(double x){ return x; } double f(double z){ return z; double g(double x,double y){ return (x-e)*y; } double de(double ee){ return((2-u[imax-1]-u[imax+1])/h/h+(V(xmax)-ee))/sq; void runge0(){ double k1,k2,k3,k4,l1,l2,l3,l4; k1=f(z)*h; l1=g(x,y)*h; k2=f(z+k1/2.)*h; l2=g(x+h/2.,y+k1/2.)*h; k3=f(z+k2/2.)*h; l3=g(x+h/2.,y+k2/2.)*h; k4=f(z+l3)*h; l4=g(x+h,y+k3)*h; x+=h; y+=(k1+2.*(k2+k3)+k4)/6.; z+=(l1+2.*(l2+l3)+l4)/6.; } void runge1() { do{ u[icount]=y; y2=y; runge0 (); icount--; }while(y>y2); imax=icount+1; xmax=x-h; } void runge2() { int i; for(i=X_min;i<=stop;i++){ u[i]=y; runge0(); } } void normalize() { int i; sq=0; for(i=0;i<=3000;i++){ sq+=u[i]*u[i]; } sq=sqrt(sq); for(i=0;i<=3000;i++){ u[i]=u[i]/sq; } a=0.; for(i=0;i<=3000;i++){ x=i*0.01; a+=exp(-0.1*(x-X0)*(x-X0))*u[i]; } } main(){ double yp1,ym1; int i; char filename[9]; FILE *fp1,*fp2; e=2.3; fp1=fopen("e_levels.dat","w"); for(node=0; node<=NMAX;node++){ h=.01; x=x1=e+3; ix=floor(x/h); e1=e; do{ e=e1+.5; e1=e; do{ icount=ix; x=x1; h=-.01; y=.00001; z=-.0005; runge1(); yp1=u[imax]; sq=0; for(i=imax;i<ix;i++){ u[i]=u[i]/yp1; sq+=u[i]*u[i]; } stop=imax; h=.01; x=0; y=0; z=.1; runge2(); ym1=u[imax]; for(i=1;i<=imax;i++){ u[i]=u[i]/ym1; sq+=u[i]*u[i]; } x=0; e+=de(e); }while(fabs(de(e))>.0001); if(node==0) break; }while(fabs(en[node-1]-e)<0.1); en[node]=e; normalize(); sprintf(filename,"%3d.dat",node+100); filename[0]='u'; fp2=fopen(filename,"w"); for(i=0;i<=3000;i+=10){ fprintf(fp2,"%i %5.8f\n",i/10,u[i]); } fclose(fp2); fprintf(fp1,"%2i %5.8f %5.8f\n",node,en[node],a); } fclose(fp1); } }