一道C++题 希望帮忙解答
目的:用C++写一个运动学计算系统
提供4个运动学公式:
d:物体的位移 t:物体运动的时间 a:物体的加速度 Vi: 物体的初速度 Vf:物体的末速度
主菜单:
Basic Mechanics Calculation System
(1) Distance travelled
(2) Initial velocity
(3) Ending Velocity
(4) Acceleration
(5) Time Travelled
(6) End
>> Enter Choice : X
如果choice是1到5,将会出来子菜单。在子菜单中,一旦完成计算,系统将自动回到主菜单。如果choice是6,系统将关闭。
注:(1)Distance travelled 是 位移d.
(2)Initial velocity是 初速度Vi.
(3)Ending Velocity是 末速度Vf.
(4)Acceleration是 加速度a.
(5)Time Travelled是 运动时间t.
子菜单: 注:系统要保留2位小数(%.2f)
如果在主菜单中选择1,将出现子菜单如下:
Distance Travelled Submenu
(A) Given Vi, a, t
(B) Given Vi, Vf, t
(C) Given Vi, Vf, a
(D) Back to Main Menu
>> Enter Choice : X
如果选择A,系统将要求你输入 Vi, a, t三个数据,然后依据 这个公式求出d(位移),系统显示出结果之后,系统自动回到主菜单。
如果选择B,系统将要求你输入Vi,Vf,t三个数据,然后根据 这个公式求出d, 系统显示出结果之后,系统自动回到主菜单。
如果选择C,系统将要求你输入Vi,Vf,a三个数据,然后根据 这个公式求出d,(这个公式在写程序的时候要进行变形,写成d=######)系统显示出结果之后,系统自动回到主菜单。
如果选择D,系统将回到主菜单。
在后面各个子菜单的计算当中,大多都需要对题目给的公式进行变形。流程也是一样的。
如果在主菜单中选择2,将出现子菜单如下:
Initial Velocity Submenu
(A) Given d, a, t
(B) Given Vf, d, t
(B) Given Vf, d, a
(C) Back to Main Menu
>> Enter Choice : X
具体如何运行,同子菜单1相同。
如果在主菜单中选择菜单3,将出现子菜单如下:
Ending Velocity Submenu
(A) Given d, a, t
(B) Given Vi, d, t
(C) Given Vi, d, a
(D) Back to Main Menu
>> Enter Choice : X
具体如何运行,同子菜单1相同。
如果在主菜单中选择4,将出现子菜单如下:
Acceleration Submenu
(A) Given Vi, d, t
(B) Given Vi, Vf, d
(C) Given Vi, Vf, t,
(D) Back to Main Menu
>> Enter Choice : X
如果在主菜单中选择5,将出现子菜单如下:
Time Travelled SubmenU
(A) Given Vi, d, a
(B) Given Vi, Vf, a
(C) Given Vi, Vf, d
(D) Back to Main Menu
>> Enter Choice : X
如果在主菜单中选择6,系统将关闭。
答案:VC新建个win32控制台工程,一个简单工程把下面代码复制进去。公式你自己填,位移的计算我帮你做好了。有问题再和我说;#include "stdafx.h"
#include <iostream.h>
#include <Windows.h>
#define RetData -1
#define invalid -2
void ShowMenu(int m)
{
switch(m)
{
case 0:
cout<<"Basic Mechanics Calculation System " <<endl;
cout<<"(1) Distance travelled" <<endl;
cout<<"(2) Initial velocity" <<endl;
cout<<"(3) Ending Velocity" <<endl;
cout<<"(4) Acceleration" <<endl;
cout<<"(5) Time Travelled" <<endl;
cout<<"(6) End" <<endl;
cout<<">> Enter Choice : ";
break;
case 1:
cout<<"Distance Travelled Submenu" <<endl;
cout<<"(1) Given Vi, a, t" <<endl;
cout<<"(2) Given Vi, Vf, t" <<endl;
cout<<"(3) Given Vi, Vf, a" <<endl;
cout<<"(4) Back to Main Menu" <<endl;
cout<<">> Enter Choice : ";
break;
case 2:
cout<<"Distance Travelled Submenu" <<endl;
cout<<"(1) Given d, a, t" <<endl;
cout<<"(2) Given Vf, d, t" <<endl;
cout<<"(3) Given Vf, d, a" <<endl;
cout<<"(4) Back to Main Menu" <<endl;
cout<<">> Enter Choice : ";
break;
case 3:
cout<<"Distance Travelled Submenu" <<endl;
cout<<"(1) Given d, a, t" <<endl;
cout<<"(2) Given Vi, d, t" <<endl;
cout<<"(3) Given Vi, d, a" <<endl;
cout<<"(4) Back to Main Menu" <<endl;
cout<<">> Enter Choice : ";
break;
case 4:
cout<<"Distance Travelled Submenu" <<endl;
cout<<"(1) Given Vi, a, t" <<endl;
cout<<"(2) Given Vi, Vf, d" <<endl;
cout<<"(3) Given Vi, Vf, t" <<endl;
cout<<"(4) Back to Main Menu" <<endl;
cout<<">> Enter Choice : ";
break;
case 5:
cout<<"Distance Travelled Submenu" <<endl;
cout<<"(1) Given Vi, d, a" <<endl;
cout<<"(2) Given Vi, Vf, a" <<endl;
cout<<"(3) Given Vi, Vf, d" <<endl;
cout<<"(4) Back to Main Menu" <<endl;
cout<<">> Enter Choice : ";
break;
default:
exit(0);
}
}
float Function(float d,float Vi,float Vf,float a,float t)
{
//这里没有做容错判断,所以输入数据的时候注意点,需要的话自己加容错
//以下公式自己填写,求位移的公式我给出来了
if(d==RetData)
{
if(Vf==invalid)
{
d=Vi*t+a*t*t/2;//初速度*时间+1/2 加速度*时间的平方
}
else if(a==invalid)
{
d=(Vi+Vf)/2*t;//
}
else if(t==invalid)
{
d=(Vf*Vf-Vi*Vi)/2/a;//
}
return d;
}
else if(Vi==RetData)
{
if(Vf==invalid)
{
}
else if(a==invalid)
{
}
else if(t==invalid)
{
}
return Vi;
}
else if(Vf==RetData)
{
if(Vi==invalid)
{
}
else if(a==invalid)
{
}
else if(t==invalid)
{
}
return Vf;
}
else if(a==RetData)
{
if(Vf==invalid)
{
}
else if(t==invalid)
{
}
else if(d==invalid)
{
}
return a;
}
else if(t==RetData)
{
if(Vf==invalid)
{
}
else if(d==invalid)
{
}
else if(a==invalid)
{
}
return t;
}
}
int main(int argc, char* argv[])
{
int m=0,n=0;//m决定哪个菜单,n决定哪条命令
float d,Vi,Vf,a,t;
while(1)
{
ShowMenu(m);
cin>>n;
switch(m)//判断菜单
{
case 0:
m=n;
break;
case 1:
switch(n)//判断命令
{
case 1:
Vf=invalid;d=RetData;//invalid表示不相关项,RetData表示待求项
cout<<"Please input Vi:";cin>>Vi;
cout<<"Please input a:";cin>>a;
cout<<"Please input t:";cin>>t;
d=Function(d,Vi,Vf,a,t);cout<<"D:"<<d<<endl;system("pause");
break;
case 2:
a=invalid;d=RetData;//invalid表示不相关项,RetData表示待求项
cout<<"Please input Vi:";cin>>Vi;
cout<<"Please input Vf:";cin>>Vf;
cout<<"Please input t:";cin>>t;
d=Function(d,Vi,Vf,a,t);cout<<"D:"<<d<<endl;system("pause");
break;
case 3:
t=invalid;d=RetData;//invalid表示不相关项,RetData表示待求项
cout<<"Please input Vi:";cin>>Vi;
cout<<"Please input Vf:";cin>>Vf;
cout<<"Please input a:";cin>>a;
d=Function(d,Vi,Vf,a,t);cout<<"D:"<<d<<endl;system("pause");
上一个:c++小问题,求助大虾、、、、
下一个:C++构造函数怎么改啊?