有没有大神帮我编写C语言程序,谢谢了
比如有2个力大小分别是4N和5N,方向的起点在O点与X轴正方向成30度和60度 ,求出他们的合力大小和方向。(课题是能谁便输入几个力都能求出来的)
如果程序行的话我还会追加100分 展开
*程序名称:平面汇交力系求合力
*编译环境:borland c++
*程序作者:长松;zhuchangsong@126.com
*完成日期:2009-12-25
*程序说明:完成平面汇交力系合力求解
*/
//————include头文件————
#include<stdio.h>
#include<math.h>
//————define定义————
#define F_num 3
//声明力的个数,现在假设有3个力
#define PI 3.1415926
//————main主函数——————
int main()
{
float calculate(float *force,float
*angles,float *F_end); //计算函数声明
int index; //索引变量定义;
float F; //合力变量定义;
float forceNum[F_num];
//开辟力系值储存区;
float agl,angle[F_num-1]; //开辟相邻两力夹角储存区;
printf("按F1、α1、F2、α2、F3、....、Fn的方式顺序输入力系元素;\n注意:力Fn单位为“牛”,角度αn单位为度!\n");
//以下完成平面汇交力系参数输入;
for(index = 0; index
< F_num;index++){
printf("F%d = ",index);
scanf("%f",&(forceNum[index]));
if(index < F_num - 1){
printf("α%d =
",index);
scanf("%f",&(angle[index]));
}
}
//遍历并输出力系参数,以确定是否有输入错误;
for(index = 0;
index < F_num;index++){
printf("\nF%d =
%.5f牛\n",index,forceNum[index]);
if(index < F_num - 1)
printf("α%d = %.5f度",index-1,angle[index]);
}
//以下是调用求解函数求解力系合力;
agl =
calculate(forceNum, angle,&F);
//以下为求解结果的输出
printf("\n最终合力F =
%.5f牛,其方向与F%d成%.5f度",F,index,agl*180/PI);
return 0;
}
//力系求解函数定义...
float calculate(float *force,float *angles,float *F_end){
float F1,F2;
float agl,agl_add;
int index = 0;
F1 = *(force + index);
agl = (*(angles + index))*PI/180;
for(index = 0;index < F_num -
1;index++){
F2 = *(force + index + 1);
*F_end = sqrt(F1*F1 + F2*F2 - 2*F1*F2*cos(PI-agl) ); //每步的合力
printf("\n第%d次合力F = %.5f牛\n",index,*F_end);
agl_add = acos((F2*F2 + (*F_end)*(*F_end) - F1*F1) / (2 * F2 *
*F_end));//合力F与右邻边力夹角
F1 = *F_end;
if(index < F_num - 2){
agl = (*(angles +
index))*PI/180;
agl += agl_add;
printf("合力F与下一个力F%d的夹角β = %05f度\n",index+2,agl*180/PI);
}
}
return agl_add;
}