특정 시점에 객체의 현재 높이를 출력하는 간단한 C++ 프로그램을 작성하려고합니다. 성취하고자하는 대상은 중력이 가해진 임의의 속도에서 벗어난 다양한 위치에서 시작하는 대상을 가지고 있다는 것입니다. 공이 벽이나 다른 물체와 충돌하면 에너지 손실없이 뒤로 움직여야하지만 중력 때문에 계속 떨어집니다. 공이 특정 높이에 도달하면 해당 값을 출력하십시오.C++ Logic Issue
지금 내 노력은 내 공이 너비 경계를 벗어 났는지 확인하는 것입니다. 그러나 저의 삶에 대해 왜 저의 마지막 if 문이 부르지 않는지 알 수 없습니다.
나는 정말/어리석은 것을하고 있습니까? 거리가 폭을 넘어 간 경우
int _tmain(int argc, _TCHAR* argv[])
{
float velocity;
float height, targetHeight;
float gravity;
float time;
float angle;
float width;
float move;
float distance;
gravity = 9.80f;
time = 0;
distance = 0;
cout << "Set Height\n";
cin >> height;
cout << "Set target height\n";
cin >> targetHeight;
cout << "Set Angle (0 - 90): \n";
cin >> angle;
angle *= 3.14 * 180; // convert to radians
cout << "Set velocity (0 - 100): \n";
cin >> velocity;
cout << "Set Play field Width: \n";
cin >> width;
while(height >= target )
{
time++;
distance += velocity * cos(angle) * time;
height += (velocity * sin(angle) * time) - (gravity * pow(time, 2))/2;
}
if(distance == width)
{
cout << "You've hit the wall\n";
}
return 0;
}
'while'에서'target' 대신'targetHeight'을 사용해야합니까? – ChiefTwoPencils
거리가 다른 벽에 부딪 치는 지 확인하기 위해 거리 == 0인지 확인해야합니까? 또한 볼이 벽을 통과 할만큼 충분히 빠르게 움직이는 경우 어떻게해야합니까? 당신은 아마 (거리> = 너비 또는 거리 <= 0)를 확인해야합니다 – Chachmu
'float' 평등 테스트를 만나면 항상 놀라게됩니다! – xtofl