无聊写了个计算平抛运动参数的代码,望大佬指正
他乡清客 2019-04-24 02:03:54 #include "stdafx.h"
#include <iostream>
using namespace std;
#define g 9.8
int _tmain(int argc, _TCHAR* argv[])
{
double x,h,t,Vx,Vy;//定义变量,分别表示水平方向位移,竖直方向位移,运动时间,水平方向速度分量,竖直方向分量//
x=0;
h=0;
t=0;
Vx=0;
Vy=0;
cout << "请输入水平位移,如该量未知请输入0" << endl; //依次输入变量//
cin >> x; //对于未知量输入时用0表示//
cout << "请输入竖直位移,如该量未知请输入0" << endl; //已知量用具体数值表示//
cin >> h; //由于使用h=1/2*g*t*t、Vy=g*t和x=Vx*t三个公式//
cout << "请输入运动时间,如该量未知请输入0" << endl; //所以输入时至少有两个已知量且x和Vx必须知道其中之一具体的值//
cin >> t; //才能求出其他所有的值//
cout << "请输入水平方向速度分量,如该量未知请输入0" << endl;
cin >> Vx;
cout << "请输入竖直方向速度分量,如该量未知请输入0" << endl;
cin >> Vy;
if(x!=0 && h!=0) //利用选择结构,分情况处理//
{
t=sqrt((2*h)/g);
Vx=x/t;
Vy=(2*h)/t;
}
else if(x!=0 && t!=0)
{
h=0.5*g*t*t;
Vx=x/t;
Vy=g*t;
}
else if(x!=0 && Vx!=0)
{
t=x/Vx;
Vy=g*t;
h=0.5*g*t*t;
}
else if(x!=0 && Vy!=0)
{
t=Vy/g;
h=0.5*g*t*t;
Vx=x/t;
}
else if(Vx!=0 && h!=0)
{
t=sqrt(2*h/g);
x=Vx*t;
Vy=g*t;
}
else if(Vx!=0 && t!=0)
{
h=0.5*g*t*t;
x=Vx*t;
Vy=g*t;
}
else if(Vx!=0 && Vy!=0)
{
t=Vy/g;
h=0.5*g*t*t;
x=Vy*t;
}
cout << "x=" << x << endl; //依次输出各物理量的值//
cout << "h=" << h << endl;
cout << "t=" << t << endl;
cout << "Vx=" << Vx << endl;
cout << "Vy=" << Vy << endl;
return 0;
}
新手敲着练手,有个问题不太明白,不加#include <cmath> sqrt函数同样能计算出来是为什么?