質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

1回答

2877閲覧

二体問題シミュレーション

mikann_

総合スコア21

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2016/10/25 06:14

###前提・実現したいこと
引数の数が多すぎるためもっと良いコードがあったら教えて欲しいです。
よろしくお願いいたします。
###発生している問題・エラーメッセージ

gcc twobody.c twobody.c: In function ‘main’: twobody.c:60:17: warning: too many arguments for format [-Wformat-extra-args] printf("%f %f %f %f\n",t+dt,x,y,vx,vy); ^ ---------------------------------------------- ###該当のソースコード ```C言語 #include <stdio.h> #include <stdlib.h> #include <math.h> main() { double x,y,vx,vy,t,dt,tmax,r,r3; double k0[4],k1[4],k2[4],k3[4]; double x1,y1,vx1,vy1,x2,y2,vx2,vy2; double x3,y3,vx3,vy3,x4,y4,vx4,vy4; scanf("%lf %lf %lf %lf %lf %lf",&x,&y,&vx,&vy,&dt,&tmax); for(t=0;t<tmax;t+=dt) { r =sqrt(x*x+y*y); r3=r*r*r; k0[0]=dt*vx; k0[1]=dt*vy; k0[2]=dt*(-x/r3); k0[3]=dt*(-y/r3); x1 = x+k0[0]/2.0; y1 = y+k0[1]/2.0; vx1= vx+k0[2]/2.0; vy1= vy+k0[3]/2.0; r = sqrt(x1*x1+y1*y1); r3= r*r*r; k1[0]=dt*vx1; k1[1]=dt*vy1; k1[2]=dt*(-x1/r3); k1[3]=dt*(-y1/r3); x2 = x+k1[0]/2.0; y2 = y+k1[1]/2.0; vx2= vx+k1[2]/2.0; vy2= vy+k1[3]/2.0; r = sqrt(x2*x2+y2*y2); r3= r*r*r; k2[0]=dt*vx2; k2[1]=dt*vy2; k2[2]=dt*(-x2/r3); k2[3]=dt*(-y2/r3); x3 =x+k2[0]; y3 =y+k2[1]; vx3=vx+k2[2]; vy3=vy+k2[3]; r = sqrt(x3*x3+y3*y3); r3= r*r*r; k3[0]=dt*vx3; k3[1]=dt*vy3; k3[2]=dt*(-x3/r3); k3[3]=dt*(-y3/r3); x =x +(k0[0]+2.0*k1[0]+2.0*k2[0]+k3[0])/6.0; y =y +(k0[1]+2.0*k1[1]+2.0*k2[1]+k3[1])/6.0; vx=vx+(k0[2]+2.0*k1[2]+2.0*k2[2]+k3[2])/6.0; vy=vy+(k0[3]+2.0*k1[3]+2.0*k2[3]+k3[3])/6.0; printf("%f %f %f %f\n",t+dt,x,y,vx,vy); } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

%fが4つに対して引数が5つあります。%fをもう一つ増やせば良いと思います。

投稿2016/10/25 06:16

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mikann_

2016/10/25 06:32

見落としていました。。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問