0

このプログラムは、固定された垂直方向および水平方向の速度である角度で発射されたオブジェクトの放物線の軌道をシミュレートします。端末コンソールに表示される座標でデータを出力します。

しかし、プログラムは 2 行目までしかデータを出力せずに終了してしまうので、コードのどこかにエラーがあるはずです。エラーを特定できないので、助けを求めています!

 #include <stdio.h>
 #include <stdlib.h>

 int main(void) {
 float lvelox;
 float lveloy;
 float xcord;
 float ycord;
 int stepcount;
 int step = 0;

 /* Initializing velocity */
 {
   printf("Enter the initial h velocity of the ball:\n");
   scanf("%f", &lvelox);
   printf("Enter the initial v velocity of the ball:\n");
   scanf("%f", &lveloy);
 }

 /* Obtain number of steps */
 {
   printf("Enter the number of steps wanted:\n");
   scanf("%d", &stepcount);
 }

 /* formula for calculating initial position */
   if ( step == 0 )
   {
   xcord = 0;
   ycord = 0;
   step = step + 1;
   printf("\n");
   printf("xcord, ycord, step\n");
   printf("\n");
   printf("%f, ", xcord);
   printf("%f, ", ycord);
   printf("%d\n", step);
   }

 /* Loop method */
   if ( step < stepcount )
   {
   lveloy = lveloy - 9.81;
   xcord = xcord + lvelox;
   ycord = ycord + lveloy;
   step = step + 1;
   printf("%f, ", xcord);
   printf("%f, ", ycord);
   printf("%d\n", step);

   if ( ycord < 0 )
   {
   lveloy = (lveloy * -1);
   lveloy = lveloy - 9.81;
   xcord = xcord + lvelox;
   ycord = ycord + lveloy;
   step = step + 1;
   printf("%f, ", xcord);
   printf("%f, ", ycord);
   printf("%d\n", step);
   }
   }

   if (step >= stepcount)
   {
       return 0;
   }

 }
4

3 に答える 3

2

コードでは、の代わりにループが必要だと思いますif

 if ( step < stepcount ) 

次のようにする必要があります。

 while ( step < stepcount )
于 2013-07-14T09:16:53.553 に答える
1

ループの構築方法を誤解していると思います。あなたはこれを書いた:

if (step == 0) {
    // Starting code
    ⋮
}
if (step < stepcount) {
    // Loop code
    ⋮
}
if (step >= stepcount) {
    // Finishing code
    ⋮
}

そして、何かがこれらのテストを自動的にループすると想定しているようです。これは起こりません。上記を次のように書き換えます。

// Starting code
⋮
for (step = 0; step < stepcount; ++step) {
    // Loop code
    ⋮
}
// Finishing code
⋮

このコードstepはパスごとに自動的にインクリメントされるため、ループ コードがコードを更新する方法を再考する必要があることに注意してください。条件付きで2回更新しているようですが、完全には理解できません。特定の変更を処方することをためらっています。

于 2013-07-14T09:25:02.873 に答える
1

あなたの「ループメソッド」はループではありません! それはif文です。インクリメントする for ループに変更するとstep、問題が解決する可能性があります。

于 2013-07-14T09:16:47.930 に答える