gpt4 book ai didi

c++ - 如何替换 C++ 循环中的旧值?

转载 作者:行者123 更新时间:2023-11-28 01:41:10 25 4
gpt4 key购买 nike

我正在尝试编写一个程序,该程序将运行一个弹射器可以从 0-90 度发射的角度,并计算每个角度将产生的距离。当一个角度产生的距离比上一个更远时,它应该替换名为“bestAngle”的变量中的先前角度。这是我目前所拥有的:

#include <iostream>
#include <cmath>

using namespace std;

int main(){
double g = 9.8;
double v,a,d,bestAngle;

for(a=0; a<=90; ++a){
double rad = a*3.14159/180;
if(a<=30){
v=45;
}else if(a>30 && a<=60){
v = 40;
}else{
v=30;
}

d = pow(v,2)*sin(2*rad)/g;
double bestAngle = 0;
double bestAngleRad = bestAngle*3.14159/180;
if(d>pow(v,2)*sin(a*bestAngleRad)/g){
bestAngle = a;
bestAngleRad = bestAngle*3.14159/180;
}
}

cout << bestAngle << endl;
}

我认为问题与最后一个 if 语句有关,因为我认为最好的角度是不更新。我不希望任何人确切地告诉我该怎么做,但如果有人能指出错误的位置,那将会很有帮助。

最佳答案

bestAngle 没有更新,因为你的外部 bestAngle 被重新定义的 bestAngle 替换,其范围在你的 for 循环内。退出循环后,内部 bestAngle 超出范围,您将恢复到外部 bestAngle,它没有改变。重命名您的内部变量并可能使用二分法,因为以您的方式寻找函数最大值是非常无效的。

关于c++ - 如何替换 C++ 循环中的旧值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47107849/

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