[Précédent] |
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] |