如何用语法表示动力学方程

How to represent the kinetic equation in syntax

所以我想写公式

KE = 1 / 2mv^2

在 C++ 中,创建一个使用动能方程计算值的函数。但我并不完全 确定如何着手展示 1 / 2。难道我不必将它设为 double,因为如果我将 1 / 2 表示为整数,它只会显示 5?编译器真正看到的是 0.5,其中的零被截断了?这是我到目前为止计算这个等式的一段代码:double KE = 1/2*mvpow(KE,2);这是我的代码和我正在尝试做的事情。

当我使用 25.

的测试值时,它给了我 0 而不是 25
//my protyped function kineticEnergy
double kineticEnergy(int m, int v);

    int main(){
      int m; // needed to pass a value into kineticEnergy function
      int v; // needed to pass a value into kineticEnergy function

      cout << "Enter the mass " << endl;
      cin >> m;
      cout << "Enter the velocity" << endl;
      cin >> v;
      int results = kineticEnergy(m,v);

      cout << "The total kinetic energy of the object is " << results << endl;

      return 0;
    } // end of main

    // ##########################################################
    //
    //  Function name: kineticEnergy
    //
    //  Description:This will grab input from a program and calculate
    // kinetic energy within the function
    // ##########################################################

    double kineticEnergy(int m, int v){
      double KE = 1/2*m*v*pow(KE,2); // equation for calculating kinetic energy

        return KE;
    } // end of kinetic energy

使用 std::array<double,3> 作为速度向量:

double kinetic_energy(double mass, std::array<double,3> const&velocity)
{
  return 0.5 * mass * (velocity[0]*velocity[0]+
                       velocity[1]*velocity[1]+
                       velocity[2]*velocity[2]); 
}

注意 1) 速度是一个向量(其大小是速度)和 2) 不推荐使用 std::pow() 来计算平方:它比单个乘法(使用 C ++11)。你可能想使用辅助

inline double square(double x)
{ return x*x; }

然后

double kinetic_energy(double mass, std::array<double,3> const&velocity)
{
  return 0.5 * mass * (square(velocity[0])+square(velocity[1])+square(velocity[2])); 
}

是的,1和2是整型常量,所以1/2给你0,就是1除以2的整数

你要的是这个(假设“m*v*pow(KE,2)”是正确的):

double KE = 1.0/2.0*m*v*pow(KE,2);

最好的就是这个-

我花了 4 个小时来设计、修改和简化这个答案。

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
int m;
cout << "Enter mass (in kg): ";
cin >> m;

int v;
cout << "Enter velocity (in m/s): ";
cin >> v;

cout << "If mass is " << m << " kg" << endl;
cout << "and velocity is " << v << " m/s," << endl;

float kinEn = m * pow(v,2) * (0.5);
cout << "then kinetic energy is " << kinEn << " Joules" << endl;
return 0;
}

避免使其成为函数 并且主要尝试先声明,然后写下它的内容(使用 cout),然后提供 space 用于输入值(使用 cin)。

代码给出以下结果。

 Enter mass (in kg): 
 Enter velocity (in m/s): 
 If mass is 57 kg
 and velocity is 20 m/s,
 then kinetic energy is 11400 Joules