Vous êtes sur la page 1sur 5

Rebonds de balles [it10] - Exercice

Karine Zampieri, Stephane Rivi`ere, Beatrice Amerein-Soltner

Unisciel algoprog Version 8 avril 2015

Table des mati`


eres
1 Rebonds de balles / pg-rebondsA1 (C++) 1
1.1 Procedure rebondir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Hauteur finale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Nombre de rebonds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1 Rebonds de balles / pg-rebondsA1 (C++)


Mots-Cl es Schema iteratif, Algorithmique, Programmation, C++.
Requis Structures de base, Structures conditionnelles, Algorithmes parametres, Struc-
tures repetitives, Schema iteratif.
Comprend [Chappelier-I1 :c02 :ex06, ex07].

Cet exercice propose deux petits probl`emes autour de la simulation du syst`eme phy-
sique du rebond dune balle.

1.1 Proc
edure rebondir

Lorsquune balle tombe dune hauteur initiale h0 , sa vitesse darrivee au sol est :
q
v0 = 2gh0

Immediatement apr`es le rebond, sa vitesse est (avec le coefficient de rebond de la balle) :

v1 = v0

Elle remonte alors a` la hauteur :


1 2
h= v
2g 1

Definissez la constante GTERRE (gravitation terrestre) de valeur 9.81.

1
Unisciel algoprog Rebonds de balles / it10 2


Ecrivez une procedure rebondir(coef,h) qui effectue un unique rebond dune balle de
coefficient de rebond coef (reel) et de hauteur courante h (reel). La procedure effectuera
le rebond puis restituera la nouvelle hauteur dans h.

Outil
C++ La fonction racine carree sqrt(x) est definie dans la biblioth`eque <cmath>.

Validez votre procedure avec la solution.

Solution simple
C++ @[rebondsA1.cpp]

Les probl`emes [Hauteur finale] et [Nombre de rebonds] utilisent les procedures suivantes
pour la saisie des donnees. Faites un copier/coller des procedures fournies.
Procedure demanderNbr(x,a,b) (reel dans x dans [a,b[)
C++ @[demanderNbrA1.cpp]

Procedure demanderSup(x,a) (reel x dans supegal `a a)


C++ @[demanderSupA1.cpp]

Procedure saisirEntier(n,a,b) (entier dans n dans [a..b])


C++ @[saisirEntierA1.cpp]

1.2 Hauteur finale

Ce probl`eme calcule la hauteur finale dune balle apr`es un nombre donne de rebonds.
Il utilise la procedure rebondir ainsi que les procedures demanderNbr, demanderSup et
saisirEntier fournies dans le probl`eme [Procedure rebondir].

Quel type de boucle (It


erer, TantQue...) allez-vous utiliser ? Justifiez.

Solution simple Ici il faut It


erer n fois (n = nombre de rebonds).


Ecrivez une fonction hrebonds(coef,h0,n) qui calcule et renvoie la hauteur finale at-
teinte par une balle de coefficient de rebond coef (reel) lachee dune hauteur initiale h0
(reel) et effectuant n (entier) rebonds.
Unisciel algoprog Rebonds de balles / it10 3

Aide m ethodologique Utilisez une repetitive Iterer (son equivalent en program-


mation) qui appelle la procedure rebondir a` partir de la hauteur h0.


Ecrivez une procedure test_hrebonds qui demande et saisit :
Un coefficient de rebond tel que 0 < 1 dans coef (reel).
Une hauteur initiale telle que h0 0 dans h0 (reel).
Un nombre de rebonds compris dans lintervalle [1..100] dans n (entier).
Affichez les invites :
Coefficient de rebond:
Hauteur initiale:
Nombre de rebonds:

Effectuez n rebonds puis affichez :


==> Hauteur finale = ...

Testez. Exemple dexecution.


Coefficient de rebond: R
eel dans [0,1[? 0.8
Hauteur initiale: R
eel >=0? 2
Nombre de rebonds: Entier dans [1..100]? 10
==> Hauteur finale = 0.0230584301

Validez votre fonction et votre procedure avec la solution.

Solution simple
C++ @[pg-rebondsA1a.cpp]

1.3 Nombre de rebonds

Ce probl`eme determine le nombre de rebonds que fait une balle avant que la hauteur
a` laquelle elle rebondit ne soit plus petite ou egale a` une hauteur donnee. Il utilise la
Unisciel algoprog Rebonds de balles / it10 4

procedure rebondir ainsi que les procedures demanderNbr et demanderSup fournies dans
le probl`eme [Procedure rebondir].

Quel type de boucle (It


erer, TantQue...) allez-vous utiliser ? Justifiez.

Solution simple Ici il faut boucler TantQue la hauteur courante h (initialisee avec
h0) est superieure a` la hauteur finale h1.

Ecrivez une fonction nrebonds(coef,h0,h1) qui calcule et renvoie le nombre de rebonds


dune balle de coefficient de rebond coef (reel) lachee dune hauteur initiale h0 (reel) et
effectuant des rebonds jusqu`a ce que la hauteur finale h1 (reel) soit atteinte.

Aide m ethodologique Utilisez une repetitive TantQue (son equivalent en program-


mation). Declarez une variable n (entier) qui compte le nombre de rebonds.

Ecrivez une procedure test_nrebonds qui demande et saisit :


Un coefficient de rebond tel que 0 < 1 dans coef (reel).
Une hauteur initiale telle que h0 0 dans h0 (reel).
Une hauteur finale telle que 0 h1 < h0 dans h1 (reel).
Affichez les invites :
Coefficient de rebond:
Hauteur initiale:
Hauteur finale:

Calculez et affichez :
==> Nombre de rebonds = ...
Unisciel algoprog Rebonds de balles / it10 5

Testez. Exemples dexecution.


Coefficient de rebond: R
eel dans [0,1[? 0.9
Hauteur initiale: R
eel >=0? 1
Hauteur finale: R
eel dans [0,1[? 0.5
==> Nombre de rebonds = 4
Coefficient de rebond: R
eel dans [0,1[? 0.8
Hauteur initiale: R
eel >=0? 2
Hauteur finale: R
eel dans [0,2[? 0.02305
==> Nombre de rebonds = 11

Validez votre fonction et votre procedure avec la solution.

Solution simple
C++ @[pg-rebondsA1b.cpp]