Vous êtes sur la page 1sur 2

Algorithmique && Langage C

TD / TP

Exercice 1 : Manipulation des fichiers


1. Écrire un programme qui lit un fichier texte contenant un numéro d’employé (int), un nom (char 20
max.) et un salaire (float). Le programme trie ensuite les employés par ordre décroissant de salaire et
écrit dans un fichier texte les informations triées. Implanter ce programme avec le tri bulle, le tri, le tri
insertion.
2. Refaire le même programme précédent, en utilisant une structure employé.

Exercice 2 : Le problème des n reines

Il s'agit de placer n reines sur un échiquier (n x n) sans qu'elles se menacent. Deux reines ne doivent pas
se trouver sur la même ligne, sur la même colonne ou sur la même diagonale
Algorithme
La méthode utilisée consiste à écrire un algorithme récursif capable de retourner en arrière, on parle
souvent de backtracking. Pour cela il faut se souvenir des choix qui ont été faits précédemment. Les
algorithmes à retour arrière procèdent pas essais/erreurs. Le schéma général consiste à décomposer le
processus d'essais et erreurs en tâches partielles. Souvent ces tâches s'expriment naturellement de façon
récursives et consistent en l'exploration d'un nombre fini de sous tâches. On peut voir tout ce processus
comme un processus de recherche qui construit peu à peu et parcourt en l'élaguant un arbre des sous
tâches. En général, celui-ci croît très vite, souvent de manière exponentielle, en fonction d'un paramètre
donné. Fréquemment l'arbre de recherche doit être élagué à l'aide d'heuristique.
Pour écrire l'algorithme, on s'inspirera de ce qui a été présenté en cours.
L'objectif de ce TP est donc de mettre en œuvre une technique de recherche utilisant le backtracking ;
Exercice 3 : Tour de Hanoï
On considère une variante des tours de Hanoï avec trois piquets A, B, C et n disques.
- les n disques sont de taille différente
- initialement les n disques sont rangés sur le piquet A, du plus grand en bas, au plus petit en
haut
- on désire amener les n disques dans le même ordre sur le piquet C
- on ne peut déplacer qu’un seul disque à la fois
- on ne peut pas poser un disque sur un disque de taille inférieure

PROF: A.SABOUR

1
1. Déterminer et prouver l’équation de récurrence correspondant au nombre minimum de
déplacements de disques

Exercice 4 : Calcul de xn
Fonction Puissance (x, n) : réel
Début
Selon que :
N=1 : retourner x
N%2=0 : retourner carrée(puissance(x,n/2))
Défaut : retourner x*carrée(puissance(x,n/2))
Fin
Remarque : on saute de xi à x2i dans une seule multiplication, ce qui est plus difficile à gérer avec une boucle. Il
s’agit donc d’un bon exemple d’utilisation de fonction récursive.

Exercice 5 : Calcul de  par la méthode de Monte-Carlo


La méthode de Monte-Carlo a pour but la résolution de problèmes
numériques déterministes à la base. La démarche consiste à
formuler un problème de probabilité dont la réponse coïncide avec
celle du problème de départ et à le résoudre de façon approchée à
l'aide d'une simulation. Cette méthode, que l'on utilisera seulement
en dernier ressort vu sa mauvaise convergence, est souvent le seul
moyen viable pour la résolution de problèmes complexes,
rencontrés surtout en physique.
Comme illustration simple, nous allons trouver une approximation
du nombre p par une méthode de Monte-Carlo géométrique.

Algorithme

Générer 2n nombres pseudo-aléatoires dans l'intervalle [0;1[.


Grouper ces nombres par deux pour obtenir n points de coordonnées (x,y) dans le carré [0;1[ x [0;1[.
Si x2+y2<1, le point M(x,y) appartient au quart de disque de rayon 1 (en vert sur le dessin ci-contre).
Compter les points verts et les diviser par le nombre total de points (n).
Quel nombre devrait-on théoriquement obtenir?

PROF: A.SABOUR

Vous aimerez peut-être aussi