gpt4 book ai didi

c++ - 在函数中使用方程式的麻烦

转载 作者:太空宇宙 更新时间:2023-11-04 12:20:55 25 4
gpt4 key购买 nike

编写一个程序,确定当您将石头从悬崖上扔下时,它会移动多远和移动多长时间。单击此处将文件 toss.txt 复制到您的桌面(右键单击文件名并选择另存为)。该文件包含以米为单位的悬崖高度。

然后程序将:

  1. 打开文件 toss.txt 并将悬崖高度读入 double 变量,然后将悬崖高度的值用适当的标签回显打印到屏幕上。

  2. 询问用户 throw 岩石的角度(90 度为直线向上,0 度为直线向前),以及 throw 岩石的速度(以英里/小时为单位)。

  3. 检查以确保角度大于或等于 0 且小于或等于 90。如果不是,程序将终止并在屏幕上打印适当的错误消息。

  4. 检查以确保速度小于或等于 100 mph 且大于或等于 0 mph。如果不是,程序将终止并在屏幕上打印相应的错误消息。

  5. 如果角度和速度有效,程序完成如下计算:

    1. 将英里每小时转换为米每秒。

    2. 将角度转换为弧度。

    3. 使用以下等式计算行进时间:

      在哪里

    4. 使用以下方法计算水平方向的行进距离:

  6. 将水平方向的时间和距离输出到带有适当标签的屏幕上。

  7. 打印一条适当的消息,告诉用户在水平方向上行进的距离是大于、小于还是等于悬崖的高度。

    /* This program */

    using namespace std;

    #include<iostream>
    #include<cmath>
    #include<iomanip>
    #include<fstream>

    int readit ();
    int calcit (double, double, double);

    int main()
    {
    readit ();

    system ("pause");

    return 0;
    }

    int readit ()
    {
    double hite, angl, v;

    ifstream datain ( "toss.txt" );

    datain >> hite;

    cout << "The cliff height is " << hite << " meters"<< endl;

    cout << "Enter the angle in degrees (from horizontal) the rock is thrown: "
    << endl;

    cin >> angl;

    if (angl>=0 && angl<=90)
    {
    cout << endl << "The angle you have entered is "<<angl<< endl <<endl;
    }
    else
    {
    cout << "The angle you have entered is not acceptable" << endl;

    return 0;
    }

    cout << "Enter the velocity in mph the rock is thrown: " << endl;

    cin >> v;

    if (v>=0 && v<=100)
    {
    cout << endl << "The velocity at which the rock is thrown is "<<v<<
    " mph" << endl << endl;
    }
    else
    {
    cout << "The velocity you have entered is not acceptable" << endl;

    return 0;
    }

    calcit (hite, angl, v);
    }

    int calcit (double hite, double angl, double v)
    {
    double tyme, dist;

    v = v * (1609.344/3600);

    angl = angl*(M_PI/180);

    tyme = -v*sin(angl) + (sqrt((v*sin(angl)*v*sin(angl)) + 2*9.8*hite)/9.8) + (2*(v*sin(angl))/9.8);

    dist = (tyme * v) * cos(angl);

    cout << tyme << " " << dist <<endl;




    }

我想知道岩石在撞击地面之前行进的正确时间,但我总是得到不正确的答案。我不确定我是否正在转动方程式来计算出岩石在撞击到 C++ 语言之前在空中停留的时间。有什么想法吗???我真的需要完成这个该死的项目。

最佳答案

从我们拥有的岩石的 y(高于 0 的高度)方程开始

y = h + v*sin(a)*t - g/2*t^2

转化为

g/2 T^2 - v*sin(a)*T - h == 0

当我们求解最终条件 y(T)=0 时。

这产生

T = v*sin(a)/g + sqrt(v*sin(a)*v*sin(a) + 2*g*h)/g

我就是想不通你方程式中的第一部分 -v*sin(angl) 是从哪里来的。其他一切看起来都很好。因此,它似乎与您的代码无关,而与您开始的方程式有关。

关于c++ - 在函数中使用方程式的麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5134708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com