2012-02-28 12 views
1

stackoverflow。私はC++の初心者です。私は最後に課題があります。私はオブジェクトが基底の高さから落ちる速度を計算するプログラムを書こうとしており、その情報をオブジェクトの高さ、つまり落下していた時間(秒)で表示しています。少しオフ C++:ネストされたifループの問題が正しく終了しない

#include <stdio.h> 

int main() { 

    int acceleration, altitude, time; 
    double distance; 

    acceleration = 32; 
    time = 0; 

    printf("What is the altitude you are dropping your object from?\n"); 
    scanf("%d", &altitude); 

    printf("Time Altitude\n"); 

    while (altitude > 0){ 
     distance = ((0.5 * acceleration) * (time * time)); 
     altitude = altitude - distance; 
     printf("%d  %d\n", time, altitude); 
     time++; 
     if (altitude <= 0){ 
      altitude = 0; 
     } 
    } 

    return 0; 
} 

は、私が距離についての方程式を知っているが、私は、現時点では詳細については心配何のプログラムが0ときの高度をプリントアウトしていないということです。これは私がこれまで持っているコードです。オブジェクトは地面に当たる。代わりに-104を出力し、負の距離は達成できないので、これを修正したいと思います。

私のwhileループ/ネストされたifループで何が問題なのですか?ではありませんテーブルの最後のエントリには0が出力されますか?

+0

強力な提案:デバッガの下のコードをステップ実行し、ループの繰り返しに従って "高度"と "距離"がどのように変化するかを見てください。 – paulsm4

+1

'distance =((0.5 * acceleration)*(time * time));'は常に '0'since' time = 0'に評価されます。 –

+0

プログラムが負の数値を出力しないようにするには、条件付き( 'if'文)を' printf() 'の前に移動します。 – chrisaycock

答えて

1

印刷する前に高度を変更してください。

while (altitude > 0){ 
    distance = ((0.5 * acceleration) * (time * time)); 
    altitude = altitude - distance; 
    if (altitude <= 0){ 
     altitude = 0; 
    } 
    printf("%d  %d\n", time, altitude); 
    time++; 
} 
+0

おかげさまで、あなたはそれを指摘したので、私は本当に馬鹿だと感じます。 – Batteries

1

この問題の原因は、サンプリング間隔です。1秒単位で進んで、マイナスの高さまで降下を計算します。あなたは少し自分のコードを変更する必要があります。

while (altitude > 0){ 
    distance = ((0.5 * acceleration) * (time * time)); 
    if (altitude < distance) { 
     break; 
    } 
    altitude = altitude - distance; 
    printf("%d  %d\n", time, altitude); 
    time++; 

}

これは、オブジェクトが地面に当たる時間が印刷されません。残りの高度、速度(acceleration*time)、およびaccelerationを使用してループの後にこの計算を行い、残りの時間の式を解き、秒を表す小数部を取得する必要があります。

0

0に設定される前に高度を出力しています。式が1秒間隔で発生すると仮定しているため、印刷されるのはその時の高度です。したがって、オブジェクトを20フィートから落とした場合、1秒後には4フィートになり、2フィート後には-60フィートで地面に当たる場所は実際には1.25秒になります。

関連する問題