gpt4 book ai didi

c - 基于物理的小程序中的无限循环

转载 作者:太空宇宙 更新时间:2023-11-04 05:11:08 24 4
gpt4 key购买 nike

这是一个模拟从 50 米高的建筑物侧面扔出网球的程序。程序应在每个时间步输出 x、y 和速度值。但是,我似乎遇到了无限循环。

 #include<stdio.h>
#include<math.h>

int main() {

//Intial values
float ax = 0; //acceleration in the horizontal direction
float ay = -9.8; //acceleration in the downward direction
float x = 0; //top of building at position 0
float y = 50; //building is height 50 m
float vx = 10*cos(30); //velocity in the horizontal direction = 10 m/s * cos(30);
float vy = 10*sin(30); //velocity in the vertical direction = 10 m/s * sin(30);
int time = 0; //time starts at 0 seconds
float deltaTime = 0.001; //increment time by .001 each iteration

//while ball is greater than 0, or above the ground which is at position 0
while(y > 0) {

time = time + deltaTime;
vx = vx + ax*deltaTime;
vy = vy + ay*deltaTime;
x = x + vx*deltaTime + (1/2*ax*deltaTime*deltaTime);
y = y + vy*deltaTime + (1/2*ay*deltaTime*deltaTime);

printf("x = %f, y = %f, vx = %f, vy = %f, time = %d, ", x,y,vx,vy,time);

}
system ("PAUSE");
return 0;

}

我的猜测是 y 永远不会小于 0,但由于我的物理知识有限,我不知道该如何解决。

最佳答案

1/2 == 0 不是 0.5

由于 1 和 2 都是整数,因此使用整数除法截断为最接近的整数。使用 0.5f 获得 float 或仅使用 0.5 获得 double。

关于c - 基于物理的小程序中的无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6073827/

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