当前位置:编程学习 > C/C++ >>

一道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++构造函数怎么改啊?

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,