Vous êtes sur la page 1sur 5

Algorithmique et programmation

Fiche de TD
Exercice 1
Ecrire un programme qui permute et affiche les valeurs de trois variables A, B, C de type
entier qui sont entrées au clavier :
A ==> B , B ==> C , C ==> A
Exercice 2
Ecrire un algorithme qui calcule la résistance équivalente à trois résistances R1, R2, R3 (type
double), l’utilisateur devra choisir le type de montage :
- si les résistances sont branchées en série:
Rsér = R1+R2+R3
- si les résistances sont branchées en parallèle:

Exercice 3
Ecrire un algorithme qui calcule la somme de quatre nombres du type entier entrés au
clavier,
a) en se servant de 5 variables (mémorisation des valeurs entrées)
b) en se servant de 2 variables (perte des valeurs entrées)

Exercice 4
Ecrire un algorithme qui calcule et affiche la distance DIST (type double) entre deux points A
et B du plan dont les coordonnées (XA, YA) et (XB, YB) sont entrées au clavier comme
entiers. Supposez que la fonction sqrt(x) calcule la racine carrée de x.

Exercice 5
Ecrivez un algorithme qui calcule les solutions réelles d'une équation du second degré
ax2+bx+c = 0 en discutant la formule du discriminant.
Exercice 6
Ecrivez un algorithme qui lit N nombres entiers au clavier et qui affiche leur somme, leur
produit et leur moyenne. Choisissez un type approprié pour les valeurs à afficher. Le
nombre N est à entrer au clavier. Résolvez ce problème,
a) en utilisant tant que,
b) en utilisant repeter … jusqu’à,
c) en utilisant pour.

1
d) Laquelle des trois variantes est la plus naturelle pour ce problème?
Exercice 7
Ecrire un algorithme qui prend en entrée un entier n, puis affiche la représentation
binaire de n :
1. En utilisant un tableau
2. Sans utiliser de tableau

Exercice 8
Ecrire un algorithme qui demande un nombre de départ, et qui ensuite écrit la table de
multiplication de ce nombre, présentée comme suit (cas où l'utilisateur entre le nombre 7) :
Table de 7 :
7x1=7
7 x 2 = 14
7 x 3 = 21

7 x 10 = 70
Exercice 9
Ecrire un algorithme qui demande un nombre de départ, et qui calcule sa factorielle.
NB : la factorielle de 8, notée 8 !, vaut
1x2x3x4x5x6x7x8
Exercice 10
Ecrire un algorithme qui prend en entrée deux nombres n et p, puis calcule et affiche
A(p,n) et C(p,n) respectivement arrangement de p dans n et combinaison de p dans n.
Exercice 11
Ecrire un algorithme qui prend en entrée deux nombres a et b, calcule et affiche le PGCD
et le PPMC de a et b. Utiliser l’algorithme d’Euclide.
Exercice 12
Ecrire un algorithme qui prend en entrée une chaine de caractères CH, vérifie si CH est
un palyndrôme.
Exercice 13
Ecrire un algorithme qui lit la dimension N d'un tableau T du type entier (dimension
maximale: 50 composantes), remplit le tableau par des valeurs entrées au clavier et affiche le
tableau.
Ranger ensuite les éléments du tableau T dans l'ordre inverse sans utiliser de tableau d'aide.
Afficher le tableau résultant.
Exercice 14
Ecrire un algorithme qui lit les dimensions L et C d'un tableau T à deux dimensions du type
int (dimensions maximales: 50 lignes et 50 colonnes). Remplir le tableau par des valeurs
entrées au clavier et afficher le tableau ainsi que la somme de chaque ligne et de chaque
colonne.
Exercice 15
Calculez pour une valeur X donnée du type réel la valeur numérique d'un polynôme de
degré n: P(X) = AnXn + An-1Xn-1 + ... + A1X + A0

2
Les valeurs de n, des coefficients An, ... , A0 et de X seront entrées au clavier.
Utilisez le schéma de Horner qui évite les opérations d'exponentiation lors du calcul:

Exercice 16
Ecrire un programme qui transfère un tableau M à deux dimensions L et C (dimensions
maximales: 10 lignes et 10 colonnes) dans un tableau V à une dimension L*C.

Exemple:

/ \
|abcd| / \
| e f g h | ==> | a b c d e f g h i j k l |
|ijkl| \ /
\ /
Exercice 17 Matrice unitaire
Ecrire un programme qui construit et affiche une matrice carrée unitaire U de dimension N.
Exercice 18 Transposition d'une matrice
Ecrire un programme qui effectue la transposition tA d'une matrice A de dimensions N et M
en une matrice de dimensions M et N.
a) La matrice transposée sera mémorisée dans une deuxième matrice B qui sera ensuite
affichée.
b) La matrice A sera transposée par permutation des éléments.
Rappel:
/ \ / \
tA = t | a b c d | = | a e i |
|efgh| |bfj|
|ijkl| |cgk|
\ / |dhl|
\ /
Exercice 18 Addition de deux matrices
Ecrire un programme qui réalise l'addition de deux matrices A et B de mêmes dimensions N
et M.
Rappel:
/ \ / \ / \
| a b c d | | a' b' c' d' | | a+a' b+b' c+c' d+d' |
| e f g h | + | e' f' g' h' | = | e+e' f+f' g+g' h+h' |
| i j k l | | i' j' k' l' | | i+i' j+j' k+k' l+l' |

3
\ / \ / \ /
a) Le résultat de l'addition sera mémorisé dans une troisième matrice C qui sera ensuite
affichée.
b) La matrice B est ajoutée à A.
Exercice 19 Multiplication de deux matrices
En multipliant une matrice A de dimensions N et M avec une matrice B de dimensions M et
P on obtient une matrice C de dimensions N et 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:

Ecrire l’algorithme qui permet de faire le produit C=A*B.


Exercice 20 Triangle de Pascal
Ecrire un programme qui construit le triangle de PASCAL de degré N et le mémorise dans
une matrice carrée P de dimension N+1.

Exemple: Triangle de Pascal de degré 6:

n=0 1
n=1 1 1
n=2 1 2 1
n=3 1 3 3 1
n=4 1 4 6 4 1
n=5 1 5 10 10 5 1
n=6 1 6 15 20 15 6 1
Méthode:
Calculer et afficher seulement les valeurs jusqu'à la diagonale principale (incluse). Limiter le
degré à entrer par l'utilisateur à 13.
Construire le triangle ligne par ligne:
- Initialiser le premier élément et l'élément de la diagonale à 1.
- Calculer les valeurs entre les éléments initialisés de gauche à droite en utilisant la relation:
Pi,j = Pi-1,j + Pi-1,j-1
Exercice 21
Les articles dans une boutique sont représentés par un code, un libellé, un prix unitaire, une
quantité en stock et une quantité seuil (minimum à avoir en stock).
1. Proposer une structure de données pour représenter un article, une autre pour
représenter une boutique sachant qu’une boutique peut avoir au maximum 1000
articles ;

4
2. Ecrire un algorithme qui permet à l’utilisateur de créer une boutique de n articles (n
est saisi au clavier)
3. Ecrire un algorithme qui permet de connaitre le libellé de l’article le moins cher et
celui de l’article le plus cher
4. Ecrire un algorithme qui permet de d’afficher à l’écran la liste des articles dont la
quantité en stock est inférieure à la quantité seuil
5. Ecrire un algorithme qui calcule et affiche la somme des montants totaux des articles
en stock.
Exercice 22
On aimerait écrire un programme pour traiter les données des étudiants. Un étudiant est
caractérisé par son matricule, son nom et ses trois notes (note1, note2, note3).
Proposer une structure de données pour résoudre ce problème
Ecrire un algorithme qui calcule la moyenne de chaque étudiant.
Soit une classe de 10 étudiants. Les notes de ces étudiants sont dans l’ordre les suivantes : 2 ;
4 ; 1 ; 7 ; 9 ; 5 ; 8 ; 0 ; 1 ; 6.
1. Quel est le type de données convenable pour le traitement de ces notes ? déclarer le.

On aimerait faire les traitements suivants sur ces notes : calculer la moyenne générale,
trouver la plus grande note, trouver la note la plus faible, rechercher une note.
Pour chacune des questions suivantes, écrire le principe de résolution et l’algorithme.
2. Ecrire une fonction moyenne qui prend en paramètres un tableau et le nombre d’éléments
du tableau puis calcule et retourne la moyenne des éléments de ce tableau.
3. Ecrire une fonction maximum qui prend en paramètres un tableau et le nombre d’éléments
du tableau puis retourne la valeur maximale des éléments de ce tableau.
4. Ecrire une fonction minimum qui prend en paramètres un tableau et le nombre d’éléments
du tableau puis retourne la valeur minimale des éléments de ce tableau.
5. Ecrire une fonction rechercher qui prend en paramètres un tableau, le nombre d’éléments
du tableau et une valeur val puis retourne la position de ‘val’ dans le tableau ou -1 (au cas où
‘val’ n’est pas présente dans le tableau.
6. Ecrire un algorithme principal qui utilise les fonctions écrites précédemment pour faire les
traitements voulus plus haut.