Parachutiste
jumpy42
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
jumpy42 Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
jumpy42 Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
bonsoir , besoin urgent d'un coup de main quelqu'un pourrait m'expliquer comment mon code ne donne pas les bonne valeurs lorsque je passes les valeurs suivantes 400 et 250 pourtant pour des valeurs de 80 et 39000 j'obtiens les bon résultats
import java.util.Scanner; class 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 t = t0; double hauteur = h0; double vitesse = v0; double accel = g; double s0 = 2; boolean max = false; boolean depass = false; boolean ouv = false; double s; double q; do { s = s0 / masse; 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 (vitesse > 343 && depass == false) { System.out.println("## Felix depasse la vitesse du son"); depass = true; } if (accel < 0.5 && max == false) { System.out.println("## Felix a atteint sa vitesse maximale"); max = true; } if (hauteur < 2500 && ouv == false && t != 0) { System.out.println("## Felix ouvre son parachute"); ouv = true; } System.out.format("%.0f, %.4f, %.4f, %.5f\n", t, hauteur, vitesse, accel); t++; } while (hauteur >= 2500); s0 = 25; s = s0 / masse; h0 = hauteur; v0 = vitesse; t0 = t - 1; do { 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 < 2500 && ouv == false && t != 0) { System.out.println("## Felix ouvre son parachute"); ouv = true; } if (accel < 0.5 && max == false) { System.out.println("## Felix a atteint sa vitesse maximale"); max = true; } if (hauteur > 0) { System.out.format("%.0f, %.4f, %.4f, %.5f\n", t, hauteur, vitesse, accel); } t++; } while (hauteur > 0); /******************************************* * Ne rien modifier apres cette ligne. *******************************************/ clavier.close(); } }
1 réponse
Bonjour,
Un parachutiste de 400 kg qui saute à 250 m d'altitude !?
Y a peut-être un bug dans le programme, mais à mon avis les lois de la physique ne peuvent plus grand chose pour lui...
Il faudrait gérer le cas où le parachutiste s'écrase au sol.
Un parachutiste de 400 kg qui saute à 250 m d'altitude !?
Y a peut-être un bug dans le programme, mais à mon avis les lois de la physique ne peuvent plus grand chose pour lui...
Il faudrait gérer le cas où le parachutiste s'écrase au sol.
jumpy42
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
plutôt 40 et 250 comme donnée d'entrée