Parachutiste [Fermé]

Signaler
Messages postés
2
Date d'inscription
lundi 18 septembre 2017
Statut
Membre
Dernière intervention
19 septembre 2017
-
Messages postés
2
Date d'inscription
lundi 18 septembre 2017
Statut
Membre
Dernière intervention
19 septembre 2017
-
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

Messages postés
16370
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
18 juillet 2021
2 856
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.
Messages postés
2
Date d'inscription
lundi 18 septembre 2017
Statut
Membre
Dernière intervention
19 septembre 2017

plutôt 40 et 250 comme donnée d'entrée