Vous êtes sur la page 1sur 13

ALGORITHMES ET PROGRAMMATION PROCÉDURALE Farid H.

Algorithme et programmation classique

1
Exercices d’applications
Exercice 1

Définir brièvement ce qui suit :


Algorithme
Variable
Instruction
Identificateur

Exercice 2.

Compléter le tableau suivant en indiquant par une croix les identificateurs corrects ou
incorrects.
Identificateur Correct Incorrect
var1
1var
Var.1
Var_2
Var-2
troisieme
troisième
Moi
M100
No2
Nom_français

Exercice3 :
On a versé l’eau dans le verre à thé et le thé dans le verre à eau .Comment rétablir la situation ?
Exprimez votre solution en utilisant la notation suivante : V  T, dénote l’action consistant à verser le
contenu du verre T dans V.
Exercice4 :
1 On considère l’algorithme suivant, dont les instructions sont numérotées de 1à4 :
AlgorithmeExercice1
Variables : A, B : Entier
Début
1. A1
2. B3
3. BA+3
4. A3
Fin
Effectuez la trace pas à pas en dressant le tableau suivant :

N° A B
1 1 *
2 1 3
3 …. ….
4 …. ….

2
Exercice5 :
Même question pour l’algorithme suivant :
Quelles seront les valeurs des variables A, B et C après exécution des instructions suivantes ?
AlgorithmeExercice2
Variables : A, B, C : Entier
Début
A5
B3
CA+B
A2
CB-A
Fin
Exercice6 :
Ecrivez un algorithme de conversion euros  Dirham, l’utilisateur saisi le montant en euros puis la
devise, le résultat en dirham doit être imprimé sur l’écran.
Exercice7 :
Ecrire un algorithme qui prend une somme en dirhams et la décompose en
billets 100 dh, 50dh, 20 dh et en pièces de 10 dh, 5dh, 2dh et de 1dh.
Puis affiche le résultat à l’écran.
Exemple : si on saisie la somme de 1469dh le résultat affiché sera : 14 billets de
100dh, 1 billet 50dh, 0 billet de 20 dh, une pièce de 10 dh, une pièce de 5 dh , 2
pièces de 2 dh et 0 pièce de 1 dh.

Exercice 8

Ecrire un algorithme qui demande à l’utilisateur trois nombre a , b et c et affiche à l’écran le


maximum de ces nombres.

Exercice 9 :

Ecrire un algorithme qui demande à l’utilisateur la saisie de deux nombre a et b de l’équation


de type ‘ax+b=0’ et d’imprimer la solution.

Exercice 10 :

Même question pour l’équation de type ax²+bx+c=0 On se limitera à une solution réelle.

Exercice 11:

Cet algorithme est destiné à prédire l'avenir, et il doit être infaillible !


Il lira au clavier l’heure et les minutes, et il affichera l’heure qu’il sera une minute plus tard. Par exemple, si
l'utilisateur tape 21 puis 32, l'algorithme doit répondre :
"Dans une minute, il sera 21 heures 33".
NB : on suppose que l'utilisateur entre une heure valide. Pas besoin donc de la vérifier.

3
Exercice 12

Un magasin de reprographie facture 0,5 dh les dix premières copies, 0,30 les vingt suivantes
et 0,20 dh au-delà. Ecrivez un algorithme qui demande à l’utilisateur le nombre de
photocopies effectuées et qui affiche la facture correspondante.

Exercice 13 :
Les habitant d’une communauté paient les impôts selon les règles suivants :

 les hommes de plus de 20 ans paient l’impôt


 les femmes paient l’impôt si elles ont entre 18 et 35 ans
 les autres ne paient pas d’impôt

Le programme demandera donc l’âge et le sexe, et se prononcera donc ensuite sur le fait que l’habitant est
imposable.

Exercice14 :
Ecrire un algorithme qui demande à l’utilisateur un nombre compris entre 1 et 20 jusqu’à ce
que la réponse convienne.

Exercice15 :
Ecrire un algorithme qui demande un nombre compris entre 10 et 20, jusqu’à ce que la
réponse convienne. En cas de réponse supérieure à 20, on fera apparaître un message :
« Plus petit ! », et inversement, « Plus grand ! » si le nombre est inférieur à 10.

Exercice16 :
Ecrire un algorithme qui demande successivement N nombres à l’utilisateur qu’on connaît
pas d’avance, la saisie s’arrête lorsque l’utilisateur tape 0 et qui lui dise ensuite quel était le
plus grand parmi ces N nombres ainsi que sa position.

Exercice 17:
On vous demande de réaliser un algorithme permettant de saisir une liste de notes le nombre
de note n’est pas connues à l’avance, et qui affiche leur moyenne.
La saisie de la série de notes sera interrompue quand l’utilisateur entrera une valeur
particulière : -1 par exemple qui ne peut pas être confondu avec une note !, on s’assure aussi
que la note est comprise entre 0 et 20.
Exercice 18 :
On souhaite écrire un algorithme de calcul du pgcd de deux entiers non nuls, en utilisant la
méthode dite "égyptienne "

Exercice 19 :
Même question que l’exercice 5 mais cette fois-ci on utilise cette fois-ci la méthode d’Euclide.

4
Exercice 20 :

On voudrait simuler le fonctionnement simplifié d’une caisse.


Ecrire un algorithme qui permet de lire une liste d’achats, prix unitaire et quantité de
chaque article, calcule et affiche :
o Le montant de l’achat de chaque article.
o Le montant total de l’ensemble de l’achat.
o Le montant de la TVA calculer à base de 20%.
o Le net à payer.

Exercice 21:
On souhaite écrire un algorithme qui demande à l’utilisateur un nombre entier et l’informe
ensuite si ce nombre est premier ou non. Un nombre entier est premier s’il n’est divisible que
par 1 et par lui-même
Exercice 22 :
On souhaite écrire un algorithme qui demande à l’utilisateur un nombre entier et l’informe
ensuite si ce nombre est parfait ou non.

Exemple : 6 = 1+2+3, est un nombre parfait.

Exercice 23 :

Ecrire un algorithme qui demande à l’utilisateur un nombre entier et qui affiche le factoriel
de ce nombre.
Exemple : 5 !=1x2x3x4x5
0 !=1

Exercice 24 :
Ecrire un algorithme permettant de calculer K avec n un entier :

Notes
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………

5
Exercice 25 :

Ecrire un algorithme qui permet de calculer la somme suivante :

S = 1+ x1/ 1 !+x²/2 !+x3/ 3 !+…………. + xn /n !


NB: La valeur de x et le degré de polynôme n doivent être saisies au clavier.

Exercice 26:

Ecrire un algorithme permettant de calculer la racine carrée d’un nombre


réel A à l’aide de la formule itérative suivante :

Exercice 27:

On considère la suite de Syracuse définie par la donnée de S0 € IN* et par la


relation de récurrence : Sn+1=Sn/2 si Sn est pair Sn=3 Sn+1 si Sn est impair.
Ecrivez un algorithme permettent de saisir S0 et d’afficher les termes jusqu’à S10
on se limite aux seules variables entières S et n.
Exercice28 :
On souhaite écrire un algorithme qui calcul et affiche le nombre de combinaisons de n parmi
m:
Cn,m= m !/n !m-n ! avec n<=m

Exercice29 :
On souhaite écrire un algorithme de calcul et d'affichage des n premiers nombres premiers.
Un nombre entier est premier s’il n’est divisible que par 1 et par lui-même. On opérera une
implantation avec des boucles for imbriquées.

Exemple : Si l’utilisateur saisie une entier n=6 le programme doit afficher le résultat suivants :
1, 2, 3, 5, 7,11 ….les six premiers nombres premiers.

Exercice30 :
On souhaite écrire un algorithme afin de vérifier sur des exemples, la conjecture de
GoldBach, soit : "Tout nombre pair est décomposable en la somme de deux nombres
premiers".
Exemple :
Si l’utilisateur saisie une valeur = 14 l’algorithme doit afficher le résultat suivant :
1 ,13, 3,11, 7,7.

6
Exercice31 :
On suppose que l’on dispose d’une fonction estPremiern qui teste si l’entier n est premier y
compris 1.
1. Ecrire une fonction qui compte le nombre de nombres premiers compris dans un
intervalle d’entiers positifs fixé [a ,b[. par exemple compte premiers 5,15= 4
2. Ecrire une fonction qui pour un entier n donné calcule le nombre premier de rang n.
par exemple : premier1 = 1 car 1 est le premier nombre premier et premier6 = 11 car
11 est le cinquième.
3. Ecrire une fonction qui détermine le rang d’un nombre premier.Exercice5 :
Algorithme CalculFactorielle
Var
n1,n2 :entier
Fonction factorielle(n :entier) :eniter
Var
i,res :entier
Début
Res1
Pour i De 2 à n
Faire
res res*i
FinPour
Retourne res
FinFonc
Procédure Afficher(val :entier) : vide
Ecrire « Le résultat vaut : » ,val
Fin Procédure

Début
Lire n1
Afficher( factorielle(n1))
Lire n2
Afficher( factorielle(n2))

Fin

Question 1 :
Que produit l’algorithme pour a=24 et b=8

Question 2 :
Qu’appelle-t-on la fonction calculer, et quelles sont les conditions nécessaires pour qu’elles
n’entrent pas dans une boucle infinie

7
Exercice 32

Ecrire un algorithme qui déclare et remplisse un tableau de 7 valeurs numériques en les mettant
toutes à zéro.

Exercice 33

Ecrire un algorithme qui déclare et remplisse un tableau contenant les six voyelles de l’alphabet
latin.

Exercice 34

Ecrire un algorithme qui déclare un tableau de 9 notes, dont on fait ensuite saisir les valeurs par
l’utilisateur.

Exercice 35

Que produit l’algorithme suivant ?


Tableau Nb(5) en Entier
Variable i en Entier
Début
Pour i ← 0 à 5
Nb(i) ← i * i
i suivant
Pour i ← 0 à 5
Ecrire Nb(i)
i suivant
Fin

Peut-on simplifier cet algorithme avec le même résultat ?

Exercice 36

Que produit l’algorithme suivant ?


Tableau N(6) en Entier
Variables i, k en Entier
Début
N(0) ← 1
Pour k ← 1 à 6
N(k) ← N(k-1) + 2
k Suivant
Pour i ← 0 à 6
Ecrire N(i)
i suivant
Fin

Peut-on simplifier cet algorithme avec le même résultat ?

Exercice 37

Que produit l’algorithme suivant ?

8
Tableau Suite(7) en Entier
Variable i en Entier
Début
Suite(0) ← 1
Suite(1) ← 1
Pour i ← 2 à 7
Suite(i) ← Suite(i-1) + Suite(i-2)
i suivant
Pour i ← 0 à 7
Ecrire Suite(i)
i suivant
Fin

Exercice 38

Ecrivez la fin de l’algorithme 6.3 afin que le calcul de la moyenne des notes soit effectué et affiché
à l’écran.

Exercice 39

Ecrivez un algorithme permettant à l’utilisateur de saisir un nombre quelconque de valeurs, qui


devront être stockées dans un tableau. L’utilisateur doit donc commencer par entrer le nombre de
valeurs qu’il compte saisir. Il effectuera ensuite cette saisie. Enfin, une fois la saisie terminée, le
programme affichera le nombre de valeurs négatives et le nombre de valeurs positives.

Exercice 40

Ecrivez un algorithme calculant la somme des valeurs d’un tableau (on suppose que le tableau a été
préalablement saisi).

Exercice 6.10

Ecrivez un algorithme constituant un tableau, à partir de deux tableaux de même longueur


préalablement saisis. Le nouveau tableau sera la somme des éléments des deux tableaux de départ.
Tableau 1 :

4 8 7 9 1 5 4 6

Tableau 2 :

7 6 5 2 1 3 7 4

Tableau à constituer :

11 14 12 11 2 8 11 10

9
Exercice 41

Toujours à partir de deux tableaux précédemment saisis, écrivez un algorithme qui calcule le
schtroumpf des deux tableaux. Pour calculer le schtroumpf, il faut multiplier chaque élément du
tableau 1 par chaque élément du tableau 2, et additionner le tout. Par exemple si l'on a :
Tableau 1 :

4 8 7 12

Tableau 2 :

3 6

Le Schtroumpf sera :
3 * 4 + 3 * 8 + 3 * 7 + 3 * 12 + 6 * 4 + 6 * 8 + 6 * 7 + 6 * 12 = 279

Exercice 42

Ecrivez un algorithme qui permette la saisie d’un nombre quelconque de valeurs, sur le principe de
l’ex 6.8. Toutes les valeurs doivent être ensuite augmentées de 1, et le nouveau tableau sera
affiché à l’écran.

Exercice 43

Ecrivez un algorithme permettant, toujours sur le même principe, à l’utilisateur de saisir un nombre
déterminé de valeurs. Le programme, une fois la saisie terminée, renvoie la plus grande valeur en
précisant quelle position elle occupe dans le tableau. On prendra soin d’effectuer la saisie dans un
premier temps, et la recherche de la plus grande valeur du tableau dans un second temps.

Exercice 44

Toujours et encore sur le même principe, écrivez un algorithme permettant, à l’utilisateur de saisir
les notes d'une classe. Le programme, une fois la saisie terminée, renvoie le nombre de ces notes
supérieures à la moyenne de la classe.

Enoncé 45 : moyenne des éléments d’un tableau


Durée estimative : 20 minutes
Ecrivez l’algorithme qui remplit un tableau de 20 entiers (tableau d’une seule dimension) en
lisant au clavier chaque élément puis en calcule la moyenne.

Enoncé 46 Variance et écart type des éléments d’un tableau


Durée estimative : 35 minutes
Complétez l’algorithme précèdent en ajoutant le calcul de la variance et de l’écart type.
Soit M la moyenne des éléments du tableau. La variance est la moyenne des différences entre
la valeur de chaque élément du tableau et M élevées au carré, selon la formule suivant

10
n
Variance = (1/n)  ( Xi  M )²
i 0
L’écart type est la racine carré de la variance, soit :
Ecart type=
Modifier ensuite en conséquence le programme Java correspondant
Indice pour l’énoncé 2.2
Utilisez la fonction math.sqrt pour obtenir la racine carrée

Enoncé 47 : recherche séquentielle d’une valeur dans un tableau


Durée estimative : 40 minutes
L’algorithme que vous devez écrire définit un tableau d’éléments de type entier et le remplit
avec des valeurs aléatoires comprises entre 1 et 10.puis il imprime les éléments du tableau. il
lit ensuite une valeur entière et la recherche dans le tableau en commençant par l’indice
0.chaque fois que la valeur est trouvée dans le tableau ,son indice est affiché. Si la valeur
entière n’est pas retrouvée dans le tableau, un message est affiché .dans le cas contraire, le
nombre d’occurrences est affiché.
Le calcul du nombre aléatoire ne faisant pas partie de la partie algorithmique, vous pouvez
appeler la fonction prédéfinie nombreAléatoire avec 1 comme premier paramètre et 10 comme
second paramètre. Cette fonction se charge de générer n nombre entier aléatoire compris entre
1 et 10 sans en préciser l’algorithme.
Ecrivez ensuite le programme Java correspondant
Améliorez et optimisez enfin l’algorithme et le programme pour que, dés qu’il a trouvé cette
valeur entière dans le tableau, il affiche son indice et s’arrête.

Enoncé 48 : insertion d’une valeur dans un ensemble d’entiers


Durée estimative : 25 minutes
Pour représenter un ensemble, deux variables sont nécessaires :
-un tableau dont la taille représente la taille maximale de l’ensemble.
-une variable de type entier dont la valeur est la taille de l’ensemble.
Un ensemble peut contenir une valeur ou no mais il ne peut pas la contenir plus d’une fois
(pas de doublon).
Dans cet exercice, nous considérons un ensemble d’entiers dont la taille maximale est de
10.ecrivez l’algorithme qui définit ces deux variable, initialise la taille de l’ensemble à zéro,
puis lit au clavier des valeurs entières pour les introduire dans l’ensemble jusqu’à ce que la
taille maximale de celui-ci soit atteinte. L’algorithme prend soin de ne pas insérer deux fois la
même valeur dans l’ensemble. Enfin, l’algorithme affiche le contenu de l’ensemble.

Enoncé 49 Suppression d’une valeur dans un ensemble d’entiers


Durée estimative : 25 minutes
Nous considérons à nouveau un ensemble décrit par un tableau et une variable entière
contenant sa taille.
Ecrivez l’algorithme réalisant la suppression d’une valeur de l’ensemble .Cette valeur est lue
au clavier. La valeur initiale de l’ensemble est fournie par une constante (qui, bien sur ne
contient pas de doublon).

Enoncé 50: Comparaison de deux tableaux de caractères


Durée estimative : 20 minutes

11
Ecrivez le programme qui compare deux tableaux de caractères constitués exclusivement de
lettres minuscules non accentuées. L’ordre de comparaison utilisé est celui du dictionnaire,
c’est-à-dire l’ordre alphabétique des mots qui est basé sur l’ordre alphabétique entre deux
caractères.
Pour comparer deux mots, on recherche le premier caractère distinct entre eux. Le mot dont le
caractère vient avant dans l’ordre alphabétique est le mot qui précède l’autre. S’il n’y a pas de
caractères distincts et que l’un des deux mots est plus court, il précède l’autre, sinon les deux
mots sont égaux.

Exercice 51 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 52 Recherche de 'points-cols'

Rechercher dans une matrice donnée A les éléments qui sont à la fois un maximum sur leur
ligne et un minimum sur leur colonne. Ces éléments sont appelés des points-cols. Afficher les
positions et les valeurs de tous les points-cols trouvés.

Exemples: Les éléments soulignés sont des points-cols:

/ \ / \ / \ / \
|18340| |4589| |35677| |123|

12
| | |3893| |42289| |456|
|67270| |3493| |63297| |789|
\ / \ / \ / \ /
Méthode: Etablir deux matrices d'aide MAX et MIN de même dimensions que A, telles que:
/ 1 si A[i,j] est un maximum
MAX[i,j] = | sur la ligne i
\ 0 sinon

/ 1 si A[i,j] est un minimum


MIN[i,j] = | sur la colonne j
\ 0 sinon

Exercice 53 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:

Rappel:

/ \ / \ / \
|abc| |pq| | a*p + b*r + c*t a*q + b*s + c*u |
| e f g | * | r s | = | e*p + f*r + g*t e*q + f*s + g*u |
| h i j | | t u | | h*p + i*r + j*t h*q + i*s + j*u |
|klm| \ / | k*p + l*r + m*t k*q + l*s + m*u |
\ / \ /

Ecrire un programme qui effectue la multiplication de deux matrices A et B. Le résultat de la


multiplication sera mémorisé dans une troisième matrice C qui sera ensuite affichée.

13

Vous aimerez peut-être aussi