您的当前位置:首页正文

中国地质大学地下建筑结构管片内力计算公式法c程序

来源:九壹网


为了完成老师的作业方便计算而编制的程序

使用一次之后感觉以后不用就可惜了,所以拿出来共享一下。

#include

#include

#include

#define PI 3.1415926

void main()

{

float R,g,q,Pr,Pk,P1,P2;

printf(\"请输入计算半径,自重,竖向荷载,拱底反力,侧向抗力,侧向均匀荷载,侧向三角荷载\\n\");

scanf(\"%f%f%f%f%f%f%f\

struct data{

float a;

float Mg;

float Ng;

float Mq;

float Nq;

float Mpr;

float Npr;

float Mp1;

float Np1;

float Mp2;

float Np2;

float Mpk;

float Npk;

} dat[181];

int m,i;

char c;

int getchar(void);

printf(\"是否自动计算?(Y/N)\\n\");

c=getchar();

if(c!=121)

{

printf(\"请输入计算角度个数\\n\");

scanf(\"%d\

printf(\"请依次输入角度数值(0—180)\\n\");

for(i=0;i{

scanf(\"%f\

if((dat[i].a>=0)&&(dat[i].a<=180))

{dat[i].a=dat[i].a/180*PI;

dat[i].Mg=g*R*R*(1-0.5*cos(dat[i].a)-dat[i].a*sin(dat[i].a));

dat[i].Ng=g*R*(dat[i].a*sin(dat[i].a)-0.5*cos(dat[i].a));

dat[i].Mp1=P1*R*R*(0.25-0.5*cos(dat[i].a)*cos(dat[i].a));

dat[i].Np1=P1*R*cos(dat[i].a);

dat[i].Mp2=P2*R*R*(0.25*sin(dat[i].a)*sin(dat[i].a)+0.083*cos(dat[i].a)*cos(dat[i].a)*cos(dat[i].a)-0.063*cos(dat[i].a)-0.125);

dat[i].Np2=P2*R*cos(dat[i].a)*(0.063+0.5*cos(dat[i].a)-0.25*cos(dat[i].a)*cos(dat[i].a));

if(dat[i].a<=(PI/2))

{

dat[i].Mq=q*R*R*(0.193+0.106*cos(dat[i].a)-0.5*sin(dat[i].a)*sin(dat[i].a));

dat[i].Nq=q*R*(sin(dat[i].a)*sin(dat[i].a)-0.106*cos(dat[i].a));

dat[i].Mpr=Pr*R*R*(0.057-0.106*cos(dat[i].a));

dat[i].Npr=0.106*Pr*R*cos(dat[i].a);

if(dat[i].a<=(PI/4))

{

dat[i].Mpk=Pk*R*R*(0.2346-0.3536*cos(dat[i].a));

dat[i].Npk=0.3536*Pk*R*cos(dat[i].a);

}

else

{

dat[i].Mpk=Pk*R*R*(-0.3487+0.5*cos(dat[i].a)*cos(dat[i].a)+0.2357*cos(dat[i].a)*cos(dat[i].a)*cos(dat[i].a));

dat[i].Npk=Pk*R*(-0.707*cos(dat[i].a)+cos(dat[i].a)*cos(dat[i].a)+0.707*sin(dat[i].a)*sin(dat[i].a)*cos(dat[i].a));

}

}

else

{

dat[i].Mq=q*R*R*(0.693+0.106*cos(dat[i].a)-sin(dat[i].a));

dat[i].Nq=q*R*(sin(dat[i].a)-0.106*cos(dat[i].a));

dat[i].Mpr=Pr*R*R*(-0.443+sin(dat[i].a)-0.106*cos(dat[i].a)-0.5*sin(dat[i].a)*sin(dat[i].a));

dat[i].Npr=Pr*R*(sin(dat[i].a)*sin(dat[i].a)-sin(dat[i].a)-0.1*cos(dat[i].a));

if((PI-dat[i].a)<=(PI/4))

{

dat[i].Mpk=Pk*R*R*(0.2346-0.3536*cos(PI-dat[i].a));

dat[i].Npk=0.3536*Pk*R*cos(PI-dat[i].a);

}

else

{

dat[i].Mpk=Pk*R*R*(-0.3487+0.5*cos(PI-dat[i].a)*cos(PI-dat[i].a)+0.2357*cos(PI-dat[i].a)*cos(PI-dat[i].a)*cos(PI-dat[i].a));

dat[i].Npk=Pk*R*(-0.707*cos(PI-dat[i].a)+cos(PI-dat[i].a)*cos(PI-dat[i].a)+0.707*sin(PI-dat[i].a)*sin(PI-dat[i].a)*cos(PI-dat[i].a));

}

}

}

else

{

printf(\"请重新输入第%d个角度\\n\

}

printf(\"内力 角度 自重 竖向荷载 拱底反力 均匀侧压 三角侧压 弹性抗力 管片内力\\n\");

printf(\"M %8.2f%8.2f%10.2f%10.2f%10.2f%10.2f%10.2f%10.2f\\n\

80/PI),dat[i].Mg,dat[i].Mq,dat[i].Mpr,dat[i].Mp1,dat[i].Mp2,dat[i].Mpk,(dat[i].Mg+dat[i].Mq+dat[i].Mpr+dat[i].Mp1+dat[i].Mp2+dat[i].Mpk));

printf(\"N %8.2f%8.2f%10.2f%10.2f%10.2f%10.2f%10.2f%10.2f\\n\80/PI),dat[i].Ng,dat[i].Nq,dat[i].Npr,dat[i].Np1,dat[i].Np2,dat[i].Npk,(dat[i].Ng+dat[i].Nq+dat[i].Npr+dat[i].Np1+dat[i].Np2+dat[i].Npk));

}

float Mmax,Nmax,Mmin,Nmin;

Mmax=dat[0].Mg+dat[0].Mq+dat[0].Mpr+dat[0].Mp1+dat[0].Mp2+dat[0].Mpk;

Nmax=dat[0].Ng+dat[0].Nq+dat[0].Npr+dat[0].Np1+dat[0].Np2+dat[0].Npk;

Mmin=dat[0].Mg+dat[0].Mq+dat[0].Mpr+dat[0].Mp1+dat[0].Mp2+dat[0].Mpk;

Nmin=dat[0].Ng+dat[0].Nq+dat[0].Npr+dat[0].Np1+dat[0].Np2+dat[0].Npk;

for(i=1;i{

if(Mmax<(dat[i].Mg+dat[i].Mq+dat[i].Mpr+dat[i].Mp1+dat[i].Mp2+dat[i].Mpk

))

{

Mmax=(dat[i].Mg+dat[i].Mq+dat[i].Mpr+dat[i].Mp1+dat[i].Mp2+dat[i].Mpk);

}

if(Nmax<(dat[i].Ng+dat[i].Nq+dat[i].Npr+dat[i].Np1+dat[i].Np2+dat[i].Npk))

{

Nmax=(dat[i].Ng+dat[i].Nq+dat[i].Npr+dat[i].Np1+dat[i].Np2+dat[i].Npk);

}

if(Mmin>(dat[i].Mg+dat[i].Mq+dat[i].Mpr+dat[i].Mp1+dat[i].Mp2+dat[i].Mpk))

{

Mmin=(dat[i].Mg+dat[i].Mq+dat[i].Mpr+dat[i].Mp1+dat[i].Mp2+dat[i].Mpk);

}

if(Nmin>(dat[i].Ng+dat[i].Nq+dat[i].Npr+dat[i].Np1+dat[i].Np2+dat[i].Npk))

{

Nmin=(dat[i].Ng+dat[i].Nq+dat[i].Npr+dat[i].Np1+dat[i].Np2+dat[i].Npk);

}

}

printf(\"最大正弯矩为%10.2f\\n\

printf(\"最大正轴力为%10.2f\\n\

printf(\"最大负弯矩为%10.2f\\n\

printf(\"最大负轴力为%10.2f\\n\

}

else

{

printf(\"管片内力\\n\");

for(i=0;i<181;i++)

{

dat[i].a=i;

dat[i].a=dat[i].a/180*PI;

dat[i].Mg=g*R*R*(1-0.5*cos(dat[i].a)-dat[i].a*sin(dat[i].a));

dat[i].Ng=g*R*(dat[i].a*sin(dat[i].a)-0.5*cos(dat[i].a));

dat[i].Mp1=P1*R*R*(0.25-0.5*cos(dat[i].a)*cos(dat[i].a));

dat[i].Np1=P1*R*cos(dat[i].a);

dat[i].Mp2=P2*R*R*(0.25*sin(dat[i].a)*sin(dat[i].a)+0.083*cos(dat[i].a)*cos(dat[i].a)*cos(dat[i].a)-0.063*cos(dat[i].a)-0.125);

dat[i].Np2=P2*R*cos(dat[i].a)*(0.063+0.5*cos(dat[i].a)-0.25*cos(dat[i].a)*cos(dat[i].a));

if(dat[i].a<=(PI/2))

{

dat[i].Mq=q*R*R*(0.193+0.106*cos(dat[i].a)-0.5*sin(dat[i].a)*sin(dat[i].a));

dat[i].Nq=q*R*(sin(dat[i].a)*sin(dat[i].a)-0.106*cos(dat[i].a));

dat[i].Mpr=Pr*R*R*(0.057-0.106*cos(dat[i].a));

dat[i].Npr=0.106*Pr*R*cos(dat[i].a);

if(dat[i].a<=(PI/4))

{

dat[i].Mpk=Pk*R*R*(0.2346-0.3536*cos(dat[i].a));

dat[i].Npk=0.3536*Pk*R*cos(dat[i].a);

}

else

{

dat[i].Mpk=Pk*R*R*(-0.3487+0.5*cos(dat[i].a)*cos(dat[i].a)+0.2357*cos(dat[i].a)*cos(dat[i].a)*cos(dat[i].a));

dat[i].Npk=Pk*R*(-0.707*cos(dat[i].a)+cos(dat[i].a)*cos(dat[i].a)+0.707*sin(dat[i].a)*sin(dat[i].a)*cos(dat[i].a));

}

}

else

{

dat[i].Mq=q*R*R*(0.693+0.106*cos(dat[i].a)-sin(dat[i].a));

dat[i].Nq=q*R*(sin(dat[i].a)-0.106*cos(dat[i].a));

dat[i].Mpr=Pr*R*R*(-0.443+sin(dat[i].a)-0.106*cos(dat[i].a)-0.5*sin(dat[i].a)*sin(dat[i].a));

dat[i].Npr=Pr*R*(sin(dat[i].a)*sin(dat[i].a)-sin(dat[i].a)-0.1*cos(dat[i].a));

if((PI-dat[i].a)<=(PI/4))

{

dat[i].Mpk=Pk*R*R*(0.2346-0.3536*cos(PI-dat[i].a));

dat[i].Npk=0.3536*Pk*R*cos(PI-dat[i].a);

}

else

{

dat[i].Mpk=Pk*R*R*(-0.3487+0.5*cos(PI-dat[i].a)*cos(PI-dat[i].a)+0.2357*cos(PI-dat[i].a)*cos(PI-dat[i].a)*cos(PI-dat[i].a));

dat[i].Npk=Pk*R*(-0.707*cos(PI-dat[i].a)+cos(PI-dat[i].a)*cos(PI-dat[i].a)+0.707*sin(PI-dat[i].a)*sin(PI-dat[i].a)*cos(PI-dat[i].a));

}

}

}

float Mmax,Nmax,Mmin,Nmin;

Mmax=dat[0].Mg+dat[0].Mq+dat[0].Mpr+dat[0].Mp1+dat[0].Mp2+dat[0].Mpk;

Nmax=dat[0].Ng+dat[0].Nq+dat[0].Npr+dat[0].Np1+dat[0].Np2+dat[0].Npk;

Mmin=dat[0].Mg+dat[0].Mq+dat[0].Mpr+dat[0].Mp1+dat[0].Mp2+dat[0].Mpk;

Nmin=dat[0].Ng+dat[0].Nq+dat[0].Npr+dat[0].Np1+dat[0].Np2+dat[0].Npk;

for(i=1;i<181;i++)

{

if(Mmax<(dat[i].Mg+dat[i].Mq+dat[i].Mpr+dat[i].Mp1+dat[i].Mp2+dat[i].Mpk))

{

Mmax=(dat[i].Mg+dat[i].Mq+dat[i].Mpr+dat[i].Mp1+dat[i].Mp2+dat[i].Mpk);

}

if(Nmax<(dat[i].Ng+dat[i].Nq+dat[i].Npr+dat[i].Np1+dat[i].Np2+dat[i].Npk))

{

Nmax=(dat[i].Ng+dat[i].Nq+dat[i].Npr+dat[i].Np1+dat[i].Np2+dat[i].Npk);

}

if(Mmin>(dat[i].Mg+dat[i].Mq+dat[i].Mpr+dat[i].Mp1+dat[i].Mp2+dat[i].Mpk))

{

Mmin=(dat[i].Mg+dat[i].Mq+dat[i].Mpr+dat[i].Mp1+dat[i].Mp2+dat[i].Mpk);

}

if(Nmin>(dat[i].Ng+dat[i].Nq+dat[i].Npr+dat[i].Np1+dat[i].Np2+dat[i].Npk))

{

Nmin=(dat[i].Ng+dat[i].Nq+dat[i].Npr+dat[i].Np1+dat[i].Np2+dat[i].Npk);

}

}

printf(\"最大正弯矩为%10.2f\\n\

printf(\"最大正轴力为%10.2f\\n\

printf(\"最大负弯矩为%10.2f\\n\

printf(\"最大负轴力为%10.2f\\n\

}

system(\"pause\");

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Top