計算結果があってるかどうかは気にしないとして() ,いつもなら一部品計算して1時間の休憩をしてをやって最終的に「明日になったら頑張る」って投げ出していたところですが10分位でやりたい部分すべての計算を終わらせることができました!!計算があってればですけどね。
まだおおまかな設計すら途中ですが・・・とりあえず頑張ります。
絶対どこか計算間違えてる気がする。
#include<stdio.h>
float chouhoukei(void);float nagaibou(void);
float enban(void);
float enchuu(void);
float entou(void);
float kyuu(void);
float kyuukaku(void);
float sonota(void);
float situryou(void);
float a,b,l,r,m,j,d[3],ro[4]={2.7/1000000,7.9/1000000,1.19/1000000} ,v,tt;
int i,p,u;
void main(void)
{
int n,s;
float t,e,k,t0=0;
printf("任意の軸(機力の教科書p251の図参照)まわりの慣性モーメントJ[kgcm^2]\n");
i=1,u=0;
while(u!=5){
printf("部材を番号で選んでください\n0.アルミ,1.ステンレス,2.アクリル,3.その他(密度既知)\n4.その他(質量既知),5.終了\n");
scanf("%d",&u);
if(u!=5){
if(u==3){
printf("密度[kg/m^3]を入力してください\n");
scanf("%f",&ro[3]);
ro[3]=ro[3]/1000000000;
}
printf("部品%dの形を番号で選んでください.\n1.長方形板,2.長い棒,3.薄い円盤,4.円柱,5.円筒形\n6.球,7.球殻,8その他(慣性モーメント既知)\n",i);
scanf("%d",&n);
if(u==4){
printf("質量[g]を入力してください\n");
scanf("%f",&m);
m=m/1000;
}
if(n==8){
t=sonota();
}
if(n!=8){
printf("重心の回転軸からの距離[mm]を入力してください\n");
scanf("%f",&e);
if(n==1){
k=chouhoukei();
t=k+e*e*m;
printf("\n部品%dの質量=%f[kg]\n",i,m);
printf("部品%dのJ=%f[kgcm^2]\n\n",i,t/100);
}
if(n==2){
k=nagaibou();
t=k+e*e*m;
printf("\n部品%dの質量=%f[kg]\n",i,m);
printf("部品%dのJ=%f[kgcm^2]\n\n",i,t/100);
}
if(n==3){
k=enban();
t=k+e*e*m;
printf("\n部品%dの質量=%f[kg]\n",i,m);
printf("部品%dのJ=%f[kgcm^2]\n\n",i,t/100);
}
if(n==4){
k=enchuu();
t=k+e*e*m;
printf("\n部品%dの質量=%f[kg]\n",i,m);
printf("部品%dのJ=%f[kgcm^2]\n\n",i,t/100);
}
if(n==5){
k=entou();
t=k+e*e*m;
printf("\n部品%dの質量=%f[kg]\n",i,m);
printf("部品%dのJ=%f[kgcm^2]\n\n",i,t/100);
}
if(n==6){
k=kyuu();
t=k+e*e*m;
printf("\n部品%dの質量=%f[kg]\n",i,m);
printf("部品%dのJ=%f[kgcm^2]\n\n",i,t/100);
}
if(n==7){
k=kyuukaku();
t=k+e*e*m;
printf("\n部品%dの質量=%f[kg]\n",i,m);
printf("部品%dのJ=%f[kgcm^2]\n\n",i,t/100);
}
}
t0+=t/100;
i++;
}
}
printf("\n全体の慣性モーメント\nJ=%f[kgcm^2]",t0);
}
float chouhoukei(void){
printf("回転軸を選んでください\n0.x 1.y 2.z\n");
scanf("%d",&p);
printf("横の長さ[mm]を入力してください\n");
scanf("%f",&b);
printf("縦の長さ[mm]を入力してくだいさい\n");
scanf("%f",&a);
if(u!=4){
printf("厚さ[mm]を入力してください\n");
scanf("%f",&tt);
v=a*b*tt;
m=situryou();
}
d[0]=a*a*m/12;
d[1]=b*b*m/12;
d[2]=((a*a+b*b)*m)/12;
j=d[p];
return j;
}
float nagaibou(void){
printf("長さ[mm]を入力してください\n");
scanf("%f",&l);
if(u!=4){
printf("直径[mm]を入力してください\n");
scanf("%f",&tt);
v=(3.14*tt*tt/4)*l;
m=situryou();
}
j=m*l*l/12;
return j;
}
float enban(void){
printf("回転軸を選んでください\n0.x 1.y 2.z\n");
scanf("%d",&p);
printf("半径[mm]を入力してください\n");
scanf("%f",&r);
if(u!=4){
printf("厚さ[mm]を入力してください\n");
scanf("%f",&tt);
v=3.14*r*r*tt;
m=situryou();
}
d[0]=r*r*m/4;
d[1]=r*r*m/4;
d[2]=r*r*m/2;
j=d[p];
return j;
}
float enchuu(void){
printf("回転軸を選んでください\n0.x 1.y 2.z\n");
scanf("%d",&p);
printf("半径[mm]を入力してください\n");
scanf("%f",&r);
printf("長さ[mm]を入力してくだいさい\n");
scanf("%f",&l);
if(u!=4){
v=3.14*r*r*l;
m=situryou();
}
d[0]=(r*r/2+l*l/12)*m;
d[1]=(r*r/2+l*l/12)*m;
d[2]=r*r*m/2;
j=d[p];
return j;
}
float entou(void){
printf("回転軸を選んでください\n0.x 1.y 2.z\n");
scanf("%d",&p);
printf("半径[mm]を入力してください\n");
scanf("%f",&r);
if(u!=4){
printf("筒の厚さ[mm]を入力してください\n");
scanf("%f",&tt);
v=3.14*r*r*l-3.14*(r-tt)*(r-tt)*l;
m=situryou();
}
d[0]=(r*r/2+l*l/12)*m;
d[1]=(r*r/2+l*l/12)*m;
d[2]=r*r*m;
j=d[p];
return j;
}
float kyuu(void){
printf("半径[mm]を入力してください\n");
scanf("%f",&r);
if(u!=4){
v=4*3.14*r*r*r/3;
m=situryou();
}
j=2*m*r*r/5;
return j;
}
float kyuukaku(void){
printf("半径[mm]を入力してください\n");
scanf("%f",&r);
if(u!=4){
printf("核の厚さ[mm]を入力してください\n");
scanf("%f",&tt);
v=4*3.14*r*r*r/3-4*3.14*(r-tt)*(r-tt)*(r-tt)/3;
m=situryou();
}
j=2*r*r*m/3;
return j;
}
float sonota(void){
printf("\n部品%dの慣性モーメント[kgmm^2]を入力してください\n\n",i);
scanf("%f",&j);
return j;
}
float situryou(void){
if(u<=3){
m=ro[u]*v;
}
return m;
}
0 件のコメント:
コメントを投稿