2016-09-25 3 views
0

条件が満たされる前にラインを印刷することが、私はそれを見つけることができない私は、スカイダイバーや表示結果の秋のパラメータを計算するプログラムを書いています(高度、速度、および加速度)を地面に到達するまで秒単位で表示します。どのように...</p> <p>をそれはおそらく非常に簡単です

一度(標高が2500mよりも小さい場合)、彼はパラシュートを開けます。そしてプログラムは、彼が2500mに達する前に "##フェリックスがパラシュートを開ける"という印をつけてください。

その結果があることsholud: (時間、高度、速度、加速度) 131、2698.0264、377.5607、0.37098 "##フェリックスは、彼のパラシュートを開く" 132、2320.2818、377.9270、0.36182 133、1991.2751、 284.9225、-79.22827 ...

しかし、私はそれを行う方法を見つけることができません。 (時間、高度、速度、加速度) 131、2698.0264、377.5607、0.37098 132、2320.2818、377.9270、0.36182 は 133、1991.2751 "##フェリックスは、彼のパラシュートを開く":私のプログラムは、条件が満たされた後の行を印刷します、284.9225、-79.22827 ..

は、ここでは、コードは次のとおり

import java.util.Scanner; 

クラスParachutiste {

public static void main(String[] args) { 

    Scanner clavier = new Scanner(System.in); 

    double masse = 80.0; 
    do { 
     System.out.print("masse du parachutiste (>= 40) ? "); 
     masse = clavier.nextDouble(); 
    } while (masse < 40.0); 

    double h0 = 39000.0; 
    do { 
     System.out.print("hauteur de depart du parachutiste (>= 250) ? "); 
     h0 = clavier.nextDouble(); 
    } while (h0 < 250.0); 

    /******************************************* 
    * Completez le programme a partir d'ici. 
    *******************************************/ 
    final double g = 9.81; 
    double v0 = 0; 
    double t0 = 0; 

    double sourface = 2.00; 
    double vitesse = v0; 
    double hauteur = h0; 
    double accel = g; 
    double t = t0; 

    boolean printed = false; 


    System.out.printf("%.0f, %.4f, %.4f, %.5f\n", t, hauteur, vitesse, accel); 




    while (hauteur > 0) { 
     ++t; 
     double s = sourface/masse; 
     double q = Math.exp(-s * (t - t0)); 
     vitesse = (g/s) * (1-q) + v0 * q; 
     hauteur = h0 - (g/s) * (t-t0) - ((v0 - (g/s))/s) * (1-q); 
     accel = g - s * vitesse; 

     if (hauteur > 0) { 

      System.out.printf("%.0f, %.4f, %.4f, %.5f\n", t, hauteur, vitesse, accel); 



      if (hauteur < 2500) { 
      sourface = 25.0; 
      t0 = t; 
      v0 = vitesse; 
      h0 = hauteur; 
      } 

      **if ((hauteur <= 2500) && (printed == false)) { 
      System.out.println("## Felix ouvre son parachute"); 
      printed = true;** 
      } 

     } 
    } 

    /******************************************* 
    * Ne rien modifier apres cette ligne. 
    *******************************************/ 
    clavier.close(); 
} 

}

+0

2500から2499に変更しますか? –

+0

私はそれを試みました、うまくいきませんでした。でもありがとう。 私は以下の答えを得ました。 – Frenchie

答えて

0

現在の高度を表示するコードの前に「フェリックスがパラシュートを開く」という行を印刷しないのはなぜですか?

while (hauteur > 0) { 
    ++t; 
    double s = sourface/masse; 
    double q = Math.exp(-s * (t - t0)); 
    vitesse = (g/s) * (1-q) + v0 * q; 
    hauteur = h0 - (g/s) * (t-t0) - ((v0 - (g/s))/s) * (1-q); 
    accel = g - s * vitesse; 

    if (hauteur > 0) { 

     if (hauteur < 2500) { 
      sourface = 25.0; 
      t0 = t; 
      v0 = vitesse; 
      h0 = hauteur; 
     } 

     if ((hauteur <= 2500) && !printed) { 
      System.out.println("## Felix ouvre son parachute"); 
      printed = true; 
     } 

     System.out.printf("%.0f, %.4f, %.4f, %.5f\n", t, hauteur, vitesse, accel); 

    } 
} 
関連する問題