Exercices à résoudre Écrire un programme qui lit d`abord un nombre

publicité
Exercices à résoudre
1.
Écrire un programme qui lit d’abord un nombre entier positif N, puis, N nombres
entiers, et qui affiche leur somme, leur produit et leur moyenne. Concevez ce
programme en utilisant une structure
(i)
while
(ii)
do – while
(iii) for.
Laquelle des trois variantes est la plus naturelle pour ce problème ?
2.
Calculez par des soustractions successives le quotient entier et le reste de la
division entière de 2 entiers positifs entrés au clavier.
3.
Calculez la factorielle d’un entier naturel N sachant que 0! = 1.
4.
Lire un nombre naturel quelconque et afficher celui-ci en sens inverse.
Ex. : Entrée : 1234
5.
Sortie : 4321.
Écrire un programme qui permet d’afficher le graphique d’un polynôme f(x) de
degré n évalué à l’aide de la règle de Horner. Les coefficients du polynôme sont
lus dans l’ordre suivant : an, an-1, …, a1, a0. Le graphique sera tracé pour des
valeurs de x allant de u à v (u, u + 1, u + 2, …, v) où u et v sont 2 entiers saisis à
l’écran. Pour chaque valeur de x entre u et v, il s’agit d’afficher sur une même
ligne f(x) étoiles. On suppose que f(x) ≥ 0 pour chaque valeur de x entre u et v.
Exemple :
f(x) = x2 + 2 x + 1
avec u = 0 et v = 4.
*
****
*********
****************
*************************
6.
Écrire un programme qui affiche le nième nombre de Fibonacci. La suite de
Fibonacci est définie comme suit :
1, 1, 2, 3, 5, 8, 13, 21, …
ou encore, de façon plus succincte,
f1 = f2 = 1,
fn = fn-1 + fn-2 n ≥ 3.
7.
Un palindrome est un nombre, un mot ou une phrase qui reste identique quelque
soit le sens dans lequel on le lit. Par exemple, chacun des nombres à cinq chiffres
suivants est un palindrome : 12321, 55555, 45554 et 11611. Écrivez un
programme capable de lire un entier à cinq chiffres et pouvant déterminer si cet
entier est un palindrome ou non.
8.
Calculez la valeur de  à partir de la série infinie
 = 4 – 4/3 + 4/5 – 4/7 + 4/9 – 4/11 + …
Affichez une approximation de  à d décimales près où le paramètre d est saisi au
clavier.
9.
(Triplets de Pythagore) Un triangle droit peut posséder des côtés qui sont tous des
entiers. La série des trois valeurs d’entiers des côtés d’un triangle droit s’appelle
triplet de Pythagore. Ces trois côtés doivent satisfaire la relation qui dit que la
somme des carrés de deux des côtés est égale au carré de l’hypoténuse. Trouvez
les triplets de Pythagore pour cote1, cote2 et hypotenuse (les valeurs ne doivent
pas dépasser 500). Utilisez une boucle for imbriquée qui essaie toutes les
possibilités.
10.
Écrivez un programme qui affiche le motif de losange ci-dessous. Chaque côté du
losange est formé de n étoiles (n est entré au clavier).
n=5
*
***
*****
*******
*********
*******
*****
***
*
11.
Lire un nombre entier naturel d’au plus 4 chiffres et le traduire en français.
Ex. : 254 devient deux cent cinquante quatre.
12.
Écrivez un programme traçant une régression linéaire : une ligne correspondant à
la meilleure approximation d’un ensemble de points. Vous devez lire l’entier N
désignant le nombre de points; puis, les coordonnées des N points (xi, yi), i = 1, 2,
…, N. La régression linéaire est une ligne dont l’équation est :
y = y + m (x -x),
où m =
 xi yi – nxy
 xi2 – nx 2
x est la moyenne des xi et y est la moyenne des yi.
13.
Pour trouver le zéro d’une fonction f(x) dont la dérivée est connue, on peut utiliser
la méthode itérative de Newton-Raphson. Il s’agit de calculer :
xk+1 = xk – f(xk) / f '(xk).
Cette méthode parvient au même algorithme de recherche de la racine carrée d’un
nombre. Trouver la racine carrée de a revient à trouver un zéro pour f(x) = x2 – a.
Cette méthode généralise donc le calcul de la racine nième. Écrire un programme
calculant la racine nième d’un nombre à virgule flottante. Les valeurs de a et de n
sont saisies au clavier.
14.
Notre objectif est d’effectuer une approximation de la fonction f(x) = ax, a > 0
constante connue, au moyen de la série convergente :
S(x) = 1 + (x ln a) / 1! + (x ln a)2 / 2! + … + (x ln a)N / N!
Pour toute valeur de x, cette série est telle que S(x) tend vers ax, quand N tend
vers l’infini.
Les points particuliers suivants doivent être pris en compte afin d’effectuer une
approximation correcte :
-
Précision de l’approximation :
Étant donné que le terme (x ln a)N / N! tend vers zéro quand N tend vers l’infini,
l’approximation est d’autant meilleure qu’un plus grand nombre de termes est
calculé. Les termes de la série devront être calculés jusqu’à ce que (x ln a)N / N!
soit inférieur à un nombre arbitrairement petit « epsilon », indiqué en paramètre,
qui fixera la précision de l’approximation.
-
Convergence de la série :
Bien que toujours convergente, la série converge beaucoup plus lentement lorsque
x est négatif (dans ce cas, les termes de la série sont de signe alterné). Afin
d’éviter cet inconvénient, on utilisera le fait que a-x = 1 / ax, et on n’effectuera
l’approximation que pour x ≥ 0.
-
Calcul efficace du Nième terme de la série :
Posons T(N)  le Nième terme de la série = (x ln a)N / N!, il s’ensuit que T(0) = 1 et
T(N) = T(N – 1) * x / N * ln a
N ≥ 1. En observant la relation de
récurrence précédente entre les termes successifs, le calcul de chacun des termes
de la série peut être effectué beaucoup plus efficacement.
14.
Écrire un programme permettant d’évaluer la fonction f(x) suivante pour une
valeur de x donnée.
f(x) =
5
si x  (0, 3.5]  [-1, -0.5]
x – 2 si x ≥ 4
0
sinon.
-----------------------------------------
Téléchargement