Algorithmique et Langage C
INFORMATIQUE
Année 2011-2012
—–
Travaux Dirigés d’informatique
Algorithmique et langage C
1 Arrondir un nombre flottant
Écrire un programme qui demande à l’utilisateur de lui fournir un nombre flottant et le nombre de
chiffres significatifs qu’il souhaite conserver. Élever le nombre flottant au carré et afficher le nombre flottant
initial et son carré avec la précision souhaitée par l’utilisateur
1. vous commencerez par écrire l’algorithme sous forme d’organigramme
2. puis vous le traduirez en langage C
2 L’effet miroir
Écrivez un algorithme qui demande une valeur entière à l’utilisateur et qui applique un effet miroir à
cette valeur. Par exemple, la valeur obtenue par effet miroir sur l’entier 3856 est 6583.
1. vous commencerez par écrire l’algorithme sous forme d’organigramme
2. puis vous le traduirez en langage C
3 Conversion temporelle
Écrire un programme permettant de convertir une durée exprimée en secondes. La durée exprimée en
secondes sera fournie par l’utilisateur. Vous convertirez cette durée en jours, heures, minutes et secondes.
1. vous commencerez par écrire l’algorithme sous forme d’organigrammes
2. puis vous le traduirez en langage C
4 Max d’une suite de nombres
Écrire un algorithme qui demande une suite de nombres à l’utilisateur. La saisie sera terminée par le
nombre 0. Le programme doit indiquer quel était le plus grand parmi ces nnombres, ainsi que la position
du nombre dans les nombres saisis.
Par exemple, pour n= 4
Entrez le nombre numéro 1 : 12
Entrez le nombre numéro 2 : 14
Entrez le nombre numéro 3 : 8
Entrez le nombre numéro 4 : 6
Entrez le nombre numéro 5 : 0
Le plus grand de ces nombres est : 14. C’était le 2ieme nombre saisi.
1. vous commencerez par écrire l’algorithme sous forme d’organigramme
2. puis vous le traduirez en langage C
le langage C 2
5 La division euclidienne
Écrire un algorithme permettant de réaliser la division euclidienne de deux entiers positifs sans utiliser
les opérateurs /et %.
1. commencer par écrire l’algorithme sous forme d’organigrammes
2. puis traduiser le en langage C
6 Passage en caisse
Lire la suite des prix (en euros entiers et terminée par zéro) des achats d’un client. Calculer la somme
qu’il doit, lire la somme qu’il paye, et simuler la remise de la monnaie en affichant les textes "10 Euros", "5
Euros" et "1 Euro" autant de fois qu’il y a de coupures de chaque sorte à rendre.
1. vous commencerez par écrire l’algorithme sous forme d’organigramme
2. puis vous le traduirez en langage C
7 Tirage du loto
Écrivez un programme permettant d’effectuer le tirage du loto (6 valeurs tirées aléatoirement et sans
remise parmi les valeurs de 1 à 49).
1. vous décomposerez l’algorithme en fonctions élémentaires (affichage du résultat, tirage des valeurs,
...)
2. vous commencerez par les différents algorithmes sous forme d’organigrammes
3. puis vous les traduirez en langage C
8 Tri à bulle
Vous allez écrire un programme relativement connu : le tri à bulle. Ce programme balaye tout le tableau,
en comparant les éléments adjacents et les échangeant s’ils ne sont pas dans le bon ordre (ordre croissant).
Un seul passage ne déplacera un élément donné que d’une position, mais en répétant le processus jusqu’à
ce plus aucun échange ne soit nécessaire, le tableau sera trié.
1. Vous écrirez, sous forme d’organigrammes, une fonction qui prendra en paramètre le tableau à trier
et sa taille.
2. Vous le déroulez sur le tableau suivant : 5 3 2 1
3. Puis vous écrirez le programme C correspondant.
9 Fusion de tableaux triés
Écrivez un programme permettant de fusionner deux tableaux d’entiers triés. Le programme devra gé-
nérer aléatoirement les deux tableaux (taille et contenu), puis il utilisera le tri à bulle pour les trier et enfin,
il les fusionnera.
1. vous décomposerez l’algorithme en fonctions élémentaires (génération des tableaux, tri puis fusion)
2. vous commencerez par les différents algorithme sous forme d’organigrammes
3. puis vous les traduirez en langage C
le langage C 3
10 Recherche rapide dans un tableau trié
Écrivez un programme permettant de rechercher rapidement une valeur dans un tableau. Le programme
devra générer aléatoirement le tableau (taille et contenu), puis il utilisera le tri à bulle pour le trier et enfin,
il recherchera la valeur demandée par l’utilisateur dans le tableau.
La recherche devra être effectuée par dichotomie en exploitant le fait que les valeurs soient triées.
1. vous décomposerez l’algorithme en fonctions élémentaires (génération des tableaux, tri puis re-
cherche)
2. vous commencerez par les différents algorithme sous forme d’organigrammes
3. puis vous les traduirez en langage C
11 Multiplication matricielle
Écrivez un programme qui effectue la multiplication de deux matrices Aet B. Le résultat de la multi-
plication sera mémorisé dans une troisième matrice Cqui sera ensuite affichée.
Pour mémoire, en multipliant une matrice Ade dimensions net mavec une matrice Bde dimensions
met pon obtient une matrice Cde dimensions net p:
A(n, m)×B(m, p) = C(n, p)
La multiplication de deux matrices se fait en multipliant les composantes des deux matrices lignes par
colonnes :
ci,j =
k=m
X
k=1
(ai,k ×bk,j )
1. vous décomposerez l’algorithme en fonctions élémentaires (création des matrices, affichage des ma-
trices, produit matriciel)
2. vous commencerez par les différents algorithme sous forme d’organigrammes
3. puis vous les traduirez en langage C
12 Palindrome
L’objectif de déterminer si un mot est ou non un palindrome (mot qui peut se lire dans les deux sens).
Voici quelques exemples de palindromes : kayak, été, laval, elle, serres, erre, . . .
Écrivez une fonction qui prend en paramètre un tableau et renvoie vrai si le contenu du tableau est un
palindrome.
1. vous commencerez par écrire l’algorithme sous forme d’organigrammes
2. puis vous le traduirez en langage C
13 Quelques statistiques
Écrivez un programme qui demande à l’utilisateur de taper un texte au clavier puis qui calcule quelques
statistiques élémentaires sur ce texte :
Lettre la plus (resp. moins) fréquente
Nombre de lettres minuscules (resp. majuscules)
Nombre de caractères non alphabétiques (chiffres, ponctuations, ...)
Nombre de mots (un mot étant défini comme une chaîne de caractères situés entre deux espaces ou
ponctuations)
Longueur moyenne des mots
1. vous décomposerez l’algorithme en autant de fonctions élémentaires que nécessaires
2. vous commencerez par les différents algorithme sous forme d’organigrammes
3. puis vous les traduirez en langage C
le langage C 4
14 Triangle de Pascal
Écrivez un algorithme qui affiche les npremières lignes du triangle de Pascal où nest une valeur
fournie par l’utilisateur. Petit rappel : le triangle de Pascal est un arrangement géométrique des coefficients
binomiaux dans un triangle. À la ligne iet à la colonne j(0ji) est placé le cœfficient binomial
i
j. Il est utilisé pour développer des expressions de la forme (a+b)n.
1. vous décomposerez le problème en sous-programme simples (boucle principale pour calculer les
différents lignes, calcul des valeurs d’une ligne donnée, ...)
2. vous écrirez ensuite les algorithmes sous forme d’organigramme
3. puis vous les traduirez en langage C
15 Mastermind
Écrivez un programme qui propose à l’utilisateur de jouer au Mastermind. Le principe est le suivant :
10 pions de couleurs différentes, numérotés de 0 à 9, sont disponibles
l’ordinateur génère un nombre en utilisant 5 de ces 10 pions (sans répétition)
vous devez retrouver la combinaison en proposant, au plus 12 fois, une solution
à chaque essai, l’ordinateur vous indiquera le nombre de pions bien placés, ainsi que le nombre de
pions mal placés
l’objectif est de trouver la solution le plus rapidement possible
1. vous décomposerez l’algorithme en fonctions élémentaires (comptage du nombre de pions bien pla-
cés, comptage du nombre de pions mal placés, vérification de la victoire, ...)
2. vous commencerez par les différents algorithme sous forme d’organigrammes
3. puis vous les traduirez en langage C
1 / 4 100%