[Précédent]
[Index] | [Enoncé] | [Version imprimable]
[Prochain]

3.10
  Rebonds de balles - Corrigé
Niveau 2
 
 
Fichiers:
  Rebonds1.java, Rebonds2.java    

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import java.util.Scanner;

public class Rebonds1 {

    public static void main(String[] args) {
        
        Scanner scanner = new Scanner(System.in);
        
        //Constante de gravité
        final double G = 9.81;
        
        // Déclarations
        // vitesses avant et après le rebond
        double v = 0.0;
        double v1 = 0.0;
        // hauteur avant le rebond, hauteur de remontée
        double h = 0.0;
        double h1 = 0.0;
        // hauteur initiale
        double H0 = 0.0;
        // valeur epsilon
        double eps = 0.0;
        // nombre de rebonds
        int NBR = 0;

        /*
         * Entrée des valeurs par l'utilisateur,
         * avec test de validité
         */

        do {
            System.out.print("Coefficient de rebond (0 <= coeff < 1) : ");
            eps = scanner.nextDouble();
        } while ((eps < 0.0) || (eps >= 1.0));
        do {
            System.out.print("Hauteur initiale      (0 <= H0)        : ");
            H0 = scanner.nextDouble();
        } while (H0 < 0.0);
        do {
            System.out.print("Nombre de rebonds     (0 <= N )        : ");
            NBR = scanner.nextInt();
        } while (NBR < 0);

        // Boucle de calcul
        h = H0;
        // on fait une itération par rebond
        for (int nombre = 0; nombre < NBR; ++nombre) {
            v  = Math.sqrt(2.0 * G * h);
            // vitesse après le rebond
            v1 = eps * v;
            // la hauteur à laquelle elle remonte...
            h1 =(v1 * v1) / (2.0 * G);
            // ...qui devient la nouvelle hauteur initiale
            h  = h1;
            System.out.println("rebond " + (nombre+1) + " : " + h);
        }

        /* Affichage du résultat */
        System.out.println("Au " + NBR + "eme rebond, la hauteur sera de " + h + "m.");

        scanner.close();
    }
}

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import java.util.Scanner;

public class Rebonds2 {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        //Constante de gravité
        final double G = 9.81;
        // Déclarations
        // vitesses avant et après le rebond
        double v = 0.0;
        double v1 = 0.0;
        // hauteur avant le rebond, hauteur de remontée
        double h = 0.0;
        double h1 = 0.0;
        double h0 = 0.0;
        double eps = 0.0;
        double h_fin = 0.0;

        /*
         * Entrée des valeurs par l'utilisateur,
         * avec test de validité
         */
        do {
            System.out.print("Coefficient de rebond (0 <= coeff < 1) : ");
            eps = scanner.nextDouble();
        } while ((eps < 0.0) || (eps >= 1.0));
        do {
            System.out.print("Hauteur initiale      (0 <= H0)        : ");
            h0 = scanner.nextDouble();
        } while (h0 < 0.0);
        do {
            System.out.println("Hauteur finale  (0 <= h_fin ) : ");
            h_fin = scanner.nextDouble();
        } while (h_fin < 0.0 || h_fin > h0);

        // Boucle de calcul
        h = h0;
        int count = 0;
        do {
            v = Math.sqrt(2.0 * G * h);
            // vitesse après le rebond
            v1 = eps * v;
            // incrémente le nombre de rebonds
            count++;
            // la hauteur à laquelle elle remonte...
            h1 = (v1 * v1) / (2.0 * G);
            // ...qui devient la nouvelle hauteur initiale
            h  = h1;

            System.out.println("rebond " + count + " : " + h );
        } while (h1 > h_fin);

        // Affichage du résultat
        System.out.println("Nombre de rebonds :" + count);

        scanner.close();
    }
}

 


[Précédent]
[Index] | [Enoncé] | [Version imprimable]
[Prochain]