コンパイルした時に表示されません
バネのつり合いから,オーバーシュートとその時の時間を求めるのですが,以下のようにプログラムを作り,オーバーシュートprintf("\n%lf\n\n",y1-y0);は出せましたが,一番下のprintf("t=\n%lf\n\n",(y1-y0)/(1+y1));の部分が画面に表示されません.わかる方ぜひ教えてください.
#include<stdio.h>
#define G 9.8
double m,K,H,A,N,t;
double h=0.01;
double f1(double y1,double y2){
return(y2);
}
double f2(double y1,double y2){
return(-K/m*y1+G-A*N/H/m*y2);
}
main(){
int i;
double k[5][3];
double y0,y1,y2;
y1=0;
y2=0;
printf("m,K,H,A,N=");
scanf("%lf,%lf,%lf,%lf,%lf",&m,&K,&H,&A,&N);
for(i=0;i<1000;i++){
k[1][1]=h*f1(y1,y2);
k[1][2]=h*f2(y1,y2);
k[2][1]=h*f1(y1+k[1][1]/2.0,y2+k[1][2]/2.0);
k[2][2]=h*f2(y1+k[1][1]/2.0,y2+k[1][2]/2.0);
k[3][1]=h*f1(y1+k[2][1]/2.0,y2+k[2][2]/2.0);
k[3][2]=h*f2(y1+k[1][1]/2.0,y2+k[1][2]/2.0);
k[4][1]=h*f1(y1+k[3][1],y2+k[3][2]);
k[4][2]=h*f2(y1+k[3][1],y2+k[3][2]);
if(k[1][1]+k[2][1]+k[3][1]+k[4][1]<0){
break;
}
y1=y1+k[1][1]/6.0+k[2][1]/3.0+k[3][1]/3.0+k[4][1]/6.0;
y2=y2+k[1][2]/6.0+k[2][2]/3.0+k[3][2]/3.0+k[4][2]/6.0;
}
y0=m*G/K;
printf("\n%lf\n\n",y1-y0);
printf("t=\n%lf\n\n",(y1-y0)/(1+y1));
}
お礼
お礼遅くなってすいません。 ありがとうございました。 確かにscanfの中の”の場所が違いました。 参考になりました。