HARCHI Abdellah
(Formateur TDI)
Introduction
Exercice 1 : Ecrire un algorithme qui demande à l’utilisateur de saisir sa date de naissance (Jour, Mois et Année) ; puis
l’algorithme affiche le jour de sa naissance
Remarque : le nombre de jours des mois de l’année (avec simplification) sont indiqués dans le tableau suivant :
Mois 1 2 3 4 5 6 7 8 9 10 11 12
N_Jours 31 28 31 30 31 30 31 31 30 31 30 31
Exercice 2 : Soit un système de grade où A>= 18, 18 > B >= 16, 16 > C >= 14, 14> D >= 12 et E < 12. Ecrivez un
programme qui affiche votre grade en fonction de vos points. Les points sont entrés par l’utilisateur et la conversion des
points vers les grades doit être faite à l’aide d’une méthode ! Ecrivez le programme en entier.
Exercice 3 : Créez un tableau de 10 nombres entiers dont les valeurs sont entières par l’utilisateur (saisie clavier !) et
affichez à l’écran le plus grand et le plus petit nombre ainsi que la moyenne.
Exercice 5: Ecrivez un programme qui permet à l’utilisateur de supprimer une valeur d’un tableau préalablement saisi.
L’utilisateur donnera l’indice de la valeur qu’il souhaite supprimer. Attention, il ne s’agit pas de remettre une valeur à zéro,
mais bel et bien de la supprimer du tableau lui-même ! Si le tableau de départ écrit 12 – 8 – 4 – 45 – 64 – 9 – 2 7 et que
l’utilisateur souhaite supprimer la valeur d’indice 4, le nouveau tableau sera : 12 – 8 – 4 – 45 – 9 – 2 – 7.
Exercice 6 : On veut monter une application de gestion de notes des stagiaires, pour ce faire on fait appel à deux
fichiers :
Fichiers stagiaires : avec organisation indexée, Accès direct sur la clé code, ouvert en lecture.
Structure :
Code : entier
Nom : 10 Caractères
Prenom : 10 Caractères
Section : 6 Caractères
Fichier Module : avec organisation séquentielle, Accès séquentiel, ouvert en écriture.
Structure :
Code : entier
CodeModule : 20 caractères
NoteMoyenne : Numérique décimal
Travail à faire :
1. Prévoir une solution de saisie des notes pour chaque stagiaire
2. Donner la liste des stagiaires saisis
3. Donner la liste des modules
4. Donner le nombre de stagiaires dans le fichier
5. Calculer la moyenne globale des notes
6. Prévoir un traitement des exceptions pour les contraintes qui posent problèmes au système telles que l’inexistence
d’un stagiaire dans le fichier stagiaire ou dans un module dans le fichier Modules ou d’une note.
Exercice 7 : Gestion des ventes d’un magasin. On veut saisir le prix HT d’articles au regard de la TVA (livres, articles
spéciaux ou autres articles) et calculer leur prix TTC, connaissant le taux de TVA associé à chaque type (livres : 5,5 %,
disque : 20,6 %, articles spéciaux : 33,5 %, autres : 20,6 %).
1- Ecrire le programme qui permet de faire le bilan du nombre d’articles vendus et des montants HT et TTC totaux et
moyennes.
2- On suppose maintenant que chaque taux de TVA est associé à un code connu de l’utilisateur (ex. livres = 1, disque =
2, etc.). Améliorer les structures de données pour simplifier le programme précédent.
Exercice 8 : On dispose d’un tableau de nombres réels positifs T1 de taille N. Ecrire l’algorithme qui permet de trier les
valeurs contenus dans T1 dans un second tableau T2, de la plus grande à la plus petite.
Exercice 10 : Ecrire un algorithme qui calcule la racine carrée d’un nombre réel : à l’aide de la formule itérative
suivante :
X 1 1
1 A
X n 2 ( X n1 X )
n 1
Exemple :
Une somme d'argent saisie : 38 Dhs sera décomposée comme suit :Un billet de 20 Dhs, Une pièce de 10 Dhs, Une pièce
de 5 Dhs, Une pièce de 2 Dhs et Une pièce de 1 Dhs.
Cela est vrai lorsque n tend vers +∞. En informatique, il n’y a pas de notion d’infini. Le terme (xn / n !) va tendre vers
zéro. En informatique, et à partir d’une valeur de n (qui dépend de x), ce terme va être nul.
Réaliser une fonction qui fait l’approximation de l’exponentiel.
Exercice 14 : Ecrivez 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.
Exercice 15 : Soit une classe de 20 stagiaires. Chaque stagiaire est représenté par les informations suivantes :
Nom chaine
Prenom chaine
Notes Tableau réel
Moyenne réel
Classement entier
Exercice 16 : Ecrire un programme 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.
NB : Ne pas oublier des structures de contrôle pour la saisie des notes. La note doit être numérique, comprise entre 0 et
20.
Exercice 17 : Ecrire un programme permettant, à l’utilisateur de saisir les notes d’une classe. Le programme, une fois la
saisie terminée, affiche la liste des étudiants ayant une note inférieure à 10. La liste des étudiants doit être triée par ordre
alphabétique.
NB : Ne pas oublier des structures de contrôle pour la saisie des notes. La note doit être numérique, comprise entre 0 et
20.
Exercice 18 : Ecrire un programme permettant, à l’utilisateur de saisir les notes d’une classe. Le programme, une fois la
saisie terminée, renvoie le nombre de ces notes inférieures à la moyenne de la classe.
NB : Ne pas oublier des structures de contrôle pour la saisie des notes. La note doit être numérique, comprise entre 0 et
40.
Exercice 19 : Faire un programme permettant d’éditer une facture pour les clients. Les produits sont à définir avec leurs
prix dans un tableau.
Une fois le client choisi les produits, le programme calculera la somme Hors Taxe en fonction de la quantité de chaque
produit et le montant total TTC à payer en ajoutant 20 % de la somme hors taxe.
Le programme doit :
- Demander le nom du client avant de commencer d’éditer la facture.
- Contrôler le prix du produit (>0 Dh)
Exercice 20 : 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 21 : A étant un tableau de n réels. On se propose d’écrire une fonction intitulée MaxA renvoyant la valeur
maximale dans un tableau.
Exercice 22 : Ecrire un programme qui affiche un triangle isocèle formé d’étoiles de N lignes (N est fourni au clavier) :
Exemple : Nombre de ligne : 8
*
***
*****
*******
*********
***********
*************
***************
Exercice 24 : Ecrire un programme qui lit une chaine de caractères et qui convertit toutes les majuscules dans des
minuscules et vice-versa.
Exercice 25 : Ecrire un programme qui lit une chaine de caractère ne dépassant pas 200 caractères et affiche ensuite, la
longueur L de la chaine et le nombre de ‘e’ existant.
Exercice 26 : Ecrire un programme qui lit N nombres entiers et qui affiche leur somme, leur produit et leur moyenne.
Choisir un type approprié pour les valeurs à afficher. Le nombre N est à entrer au clavier.
Exercice 27 : m personnes sont assises autour d’une table circulaire et entament le jeu suivant. Elles fixent entre-elles
un entier k > 0 et une personne P1 par laquelle elles commenceront le jeu. On commence à compter de 1 à k en partant
de P1 et en tournant à droite. La Kième personne quitte la table et on continue à compter de 1 à k à partir de la personne
suivante encore à table. La personne gagnante est la dernière qui reste assise.
Analyser ce problème et faire un programme permettant de réaliser ce jeu.
Exercice 28 : On se propose d’écrire un programme qui remplit au hasard un tableau de n réels puis les affiche à l’écran.
Le programme doit calculer et afficher la valeur moyenne et la valeur Max. les réels doivent être compris entre 0 et 20.
Exercice 29 : Ecrire un programme qui recherche la valeur minimum d’un tableau d’entiers.
Exercice 30 : Ecrire un programme qui trie un tableau de n réels par ordre décroissant.
Exercice 31 : Ecrire un programme qui transfère une matrice M à deux dimensions L et C (dimensions maximales : 10
lignes et 10 colonnes) dans un tableau V à une dimension L* C.
Exemple :
a b c d
e f g h (abcdefghIjkl)
i j k l
Exercice 32 : Ecrire un programme qui effectue la transposition tA d’une matrice A de dimension N et M en une matrice
de dimensions M et N.
Rappel :
a b c d a e i
tA = t e f g h = b f j
i j k l c g k
d h l
Exercice 33: Ecrire un programme qui réalise l’addition de deux matrices A et B de mêmes dimensions N et M.
Rappel:
Exercice 34 : Faire un programme permettant de calculer la somme des N premiers termes de la série harmonique :
1 + 1/2 + 1/3 +…+ 1/N
Exercice 36 : Faire un programme 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.
Exercice 37 : Faire un programme qui calcule le produit scalaire de deux vecteurs d’entiers U et V (de même dimension).
Exemple :
( 3 2 -4 ) * (2 -3 5 ) = 3 * 2 + 2 * (-3) + (-4) * 5 = -20
Exercice 38 : On dispose de deux tableaux A et B (de dimensions respectives N et M), triés par ordre croissant.
Fusionner les éléments de A et B dans un troisième tableau FUS trié par ordre croissant.
Exercice 39 : Faire 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 :
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
Exercice 40 : Faire un programme ayant cet effet : saisir deux vecteurs de dimention N puis tester s’il sont égaux ou
non. Deux vecteurs sont égaux s’ils ont pour chaque indice la même valeur.
Exercice 41 : Faire un programme qui calcule le produit scalaire de deux vecteurs d’entiers U et V (de même dimension).
Exemple : ( 3 2 -4 ) * (2 -3 5 ) = 3 * 2 + 2 * (-3) + (-4) * 5 = -20
Exercice 42 : On dispose de deux tableaux A et B (de dimensions respectives N et M), triés par ordre croissant.
Fusionner les éléments de A et B dans un troisième tableau FUS trié par ordre croissant.
Exercice 43 : Faire un programme 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.
Exercice 44 : Ecrire un programme qui saisit une chaîne pouvant contenir des espaces et qui affiche chaque mot de la
chaîne, le séparateur etant l’espace.
Exemple, on tape : je pense donc je suis
Le programme affiche :
Mot 1 : je
Mot 2 : pense
Mot 3 : donc
Mot 4 : je
Mot 5 : suis
Exercice 45 : Ecrire un programme qui demande à l’utilisateur de taper le prix d’un kilo de tomates, le nombre de kilos
de tomates achtés, le taux de tva. Le programme affichera le prix TTC des marchandises.
Exercice 46 : Ecrire une fonction f ayant en paramètres un tableau t1 de taille quelconque et un entier n indiquant la
taille du tableau, ainsi qu’un tableau t2 de la même taille que t1. f doit renvoyer par un return un entier nb indiquant le
nombre de valeurs comprises entre 0 et 10 dans le tableau t1. f doit mettre dans le tableau t2 les différentes valeurs
comprise entre 0 et 10 qu’il a rencontrées dans le tableau t1.
Exercice 47 : Ecrire un programme de recherche de la valeur maximale et minimale d’un tableau [N][M] de réels de taille
N x M.
Exercice 48 : On considère une séquence d’entiers s de longueur L représentée dans un tableau T d’entiers défini sur
l’intervalle [1…Lmax], 0 < L < Lmax.
On veut écrire un programme qui remplace dans T la suite s par la suite s’ de longueur L’ (avec L’ <= L), déduite de s en
supprimant tous les éléments redondants. Un élément de s est redondant s’il est égal à un autre élément de s. le
Exercice 49 : Ecrire un programme qui lit le fichier VotreNom.txt crée dans votre dossier, et affiche son contenu. Le
programme doit vérifier l’existance de ce fichier.
Exercice 50 : Faire un programme permettant d’ecrire dans ce fichier, le programme ne doit pas sauvegarder dans le
fichiers des données null.
Exercice 51 : Ecrire un programme qui demande à l’utilisateur de taper 10 entiers entre 0 et 20 qui seront stockés dans
un tableau et qui affiche le nombre de fois qu’on a tapé un 0, le nombre de 1, le nombre de 2, … , le nombre de 20.
Exercice 53 : On souhaite écrire un algorithme qui permet de convertir un nombre naturel entré par l’utilisateur en
binaire.
a) Ecrire une fonction qui retourne le nombre de bits nécessaires pour présenter un entier naturel n en binaire.
b) Ecrire un algorithme qui permet d’afficher la représentation binaire d’un entier naturel n entré par l’utiisateur.
Exercice 54 : Ecrire un algorithme qui permet de chercher toutes les occurrences d’une valeur donnée dans un tableau
de N éléments.
Exemple :
12 10 12 15 14 12 6 12 7 8
Exercice 55 : On donne en entrée un tableau de N éléments de type entier. Donner le programme qui affiche les
éléments du tableau qui possèdent leur carrés (t(i) * t(i)) dans le même tableau. Les éléments sont rangés dans un ordre
aléatoire à l’intérieur du tableau.
Exemple :
1 2 4 7 11 5 9 16 25
Les éléments dont les carés sont présents : 1, 2, 4, 5
Exercice 56 : Pour un entier n strictement positif on associe n/2 si n est pair et 3n + 1 si n est impair. En réappliquant
cette transformation à l’entier obtenu, on définit un algorithme dit de Syracuse. On admettra que pour tout entier
strictement positif de départ on finisse toujour par arriver à 1.
On demande d’écrire un programme qui, pour une valeur de départ proposée par l’utilisateur, affiche la liste des entiers
obtenus jusqu’à 1, ainsi que le nombre de fois qu’il est nécessaire d’appliquer la transformation pour y arriver.
int i ;
int s = 0 ;
for (i=1 ; i < 6 ; i=i+2)
s = s + i;
a. 7
b. 9
c. 11
d. Erreur
Exercice 58 : Ecrire un programme qui transfére une matrice M à deux dimensions L et C dans un tableau V à une seule
dimension.
Exercice 59 : La direction d’un supermarché a décidé d’accorder des réductions à ses clients selon le montant d’achat.
La réduction est calculée selon les règles suivantes :
- 20% pour un montant d’achat de plus de 5000 Dhs
- 15% pour un montant d’achat entre 3000 Dhs < Montant achat ≤ 5000 Dhs
- 10% pour un montant d’achat entre 1000 Dhs < Montant achat ≤ 3000 Dhs
- Aucune réduction pour un montant d’achat inférieur à 1000 Dhs.
Ecrire un programme qui permet de calculer et d’afficher la réduction et le montant à payer.
Exercice 61 : Ecrire un algorithme qui effectue la lecture d’une matrice carrée A ainsi que sa taille n et affiche la matrice
transpose tA de A (Pour une matrice A(i, j), tA(j, i)).
Exercice 62 : Ecrire un programme permettant de trier un tableau de n réels dans un ordre croissant en utilisant la
méthode de tri bulle.
Exercice 63 : Ecrire un algorithme qui effectue la lecture d’une matrice carrée A ainsi que sa taille n et affiche la trace de
A. (Pour une matrice A(i,j), trace(A)=∑ai,i la somme des éléments sur la diagonale.
Exercice 64 : Ecrire un programme qui demande à l’utilisateur de saisir un entier N et qui affiche la figure suivante sous
forme des étoiles.
N=3
***
**
*
Exercice 65 : Ecrire un programme permettant de saisir le prix unitaire et la quantité commandée d’un article. Le
programme affichera le prix à payer, le port, et la remise sachant que :
- Le port est gratuit si le montant hors taxe est supérieur à 1000 Dhs
- Le port est 3% dans le cas contraire.
- La remise est de 5% si le montant hors taxe est compris entre 300 est 1000 Dhs et de 10% au-delà de 1000
Dhs.
NB : Montant hors taxe = prix unitaire x quantité commandée.
Exercice 66 : Ecrire un programme qui permet de comparer et de calculer la somme de deux nombres. Pour ce faire ce
menu doit être affiché.
Entrez le nombre correspondant à votre choix
1. Comparer deux entiers
2. Somme de deux entiers
3. Quitter
Exercice 67 : On modélise un nombre entier de la base octale par un tableau d’entiers de dimension 10. Chaque élément
du tableau contient un chiffre de 0 à 7. Le chiffre du poids faible occupera la case d’indice 9 du tableau.
Exemple : 3406
Le nombre est saisi en entrant successivement les chiffres du poids plus faible au poids plus fort, on marque la fin par un
chiffre qui n’est pas compris entre 0 et 7.
Exercice 68 : Soit un tableau de 100 valeurs ordonnées de manière croissante. Ecrire un programme permettant de créer
deux nouveaux tableaux ordonnés de manière croissante, contenant l’un les valeurs paires, l’autre les valeurs impaires.
Exemple :
Tableau initial
2 4 10 13 15 21 28 55 44 77
Exercice 71 : Un palindrome est une chaîne de caractères qui se lit de gauche a droite ou de droite à gauche et donne le
même résultat.
Exercice 72 : Ecrire un programme permattant de modéliser un nombre entier binaire par un tableau d’entiers de
dimension 10. Chaque élément du tableau contient un bit 0 ou 1. Le bit du poids faible occupera la case d’indice 9 du
tableau.
Exemple : 10010
0 0 0 0 0 1 0 0 1 0
Le nombre est saisi en entrant successivement les bits du poids plus faible au poids plus fort, on marque la fin par un
chiffre de 0 et 1.
Exercice 73 : Ecrire un programme qui permet d’afficher tous les nombres abondants inférieurs à 50. Un nombre
abondant est un nombre entier naturel n qui est strictement inférieur à la somme de ses diviseurs stricts.
Exercice 74 : Ecrire un programme qui lit un entier X et un tableau A du type int au clavier et élimine toutes les
occurrences de X dans A en tassant les éléments restants (décalage).
Exercice 76 : Ecrire un programme permettant de calculer le Poids Idéal (PI) obtenu par la formule de Lorentz :
Pour les femmes : PI = t – 100 – [ ( t – 150 ) / 2 ]
Pour les hommes : PI = t – 100 – [ ( t – 150 ) / 4 ]
T = taille en centimètre
Exercice 77 : Ecrire un programme qui permet d’insérer une valeur X dans un tableau T, supposé trié, de façon à
respecter l’ordre des éléments de T. le tableau T contient N éléments et sera dimensionné à N + 1 (pour permettre de
ranger X)
Si N=10 et T = 17 17 21 23 24 26 27 30 30 38
Si X = 25 On doit obtenir : 17 17 21 23 24 25 26 27 30 30 38
Exercice 78 : Ecrire un programme de recherche de la valeur maximale d’une matrice de réels de taille n x m.
Exercice 80 : Ecrire un programme de recherche de la valeur maximale d’une matrice de réels de taille n x m.
Exercice 81 : Un nombre parfait est un entier positif supérieur à 1, égal à la somme de ses diviseurs.
NB : On compte 1 comme diviseur, mais on ne compte pas comme diviseur le nombre lui-même.
Exemple :
6 est un nombre parfait puisque 6 = 3 + 2 + 1.
1. Ecrire une fonction qui prend pour argument un nombre entier n et retourne Vrai si n est parfait ou Faux sinon.
2. Ecrire un programme permettant de lister les 500 premiers nombres parfaits.
Exercice 83 : Pour chacune des deux séquences algorithmiques suivantes, dire s’il est possible de simplifier son écriture.
Si oui, comment ; et sinon pourquoi ?
a- b-
Si A>B Alors Si U = 5 Alors
C2*D U2*V
DA–B VV+U
AB+D WV
BA+D Sinon
Sinon U2*V
C2*D VV+U
DB–A W -V
AB+D FinSi
BA+D
FinSi
Exercice 84 : Une matrice carrée est un tableau à deux dimensions dont le nombre de lignes est égale au nombre de
colonnes. Une matrice est dite équilibrée si la somme des éléments de chaque ligne est égale à zéro, la somme des
éléments de chaque colonne est égale à zéro et la somme des éléments des deux diagonales est égale à zéro aussi.
Ecrire un algorithme qui lit une matrice carrée d’entiers et vérifie si elle est équilibrée ou non. Vous devez afficher soit la
mention « Votre matrice est équilibrée » ou la mention « Votre matrice est non équilibrée ».
Exercice 85 : Ecrire un programme qui permet de trouver les nombres premiers inférieurs ou égaux un entier N donné
par l’utilisateur.
La méthode consiste à remplir un tableau, dans l’ordre du plus petit au plus grand, par les entiers compris entre 2 et N (N
étant l’entier limite précisé par l’utilisateur) ; puis de parcourir le tableau depuis le début, en gardant un entier rencontré
et éliminant tous ses multiples, par leur mise à zéro par exemple. A la fin du parcours, tous les entiers restants (non nuls)
sont des nombres premiers.
Exercice 86 : Ecrire un programme permettant de compter le nombre de diviseurs d’un nombre entier donné par
l’utilisateur, puis les afficher du plus grand au plus petit.
Exemple d’exécution :
Le nombre de diviseurs de 8 est : 4
Les diviseurs de 8 par ordre décroissant : 8, 4, 2, 1
Exercice 87 : Ecrire un programme permettant de saisir un tableau de 10 valeurs entières et de diviser l’ensemble des
éléments du tableau par la valeur du nième élément du tableau, n étant saisi par l’utilisateur.
Exemple d’exécution :
Soit le tableau saisi : 8 – 4 – 6 – 2 – 4 – 12 – 6 – 14 – 10 – 8
N=4:
Tableau résultat : 4 – 2 – 3 – 1 – 2 – 6 – 3 – 7 – 5 – 4
Exercice 88 : Ecrire une fonction nommée « puissance(x,y) » permettant de retourner xy , avec x et y des réels passés
en paramètres.
Ecrire un programme qui utilise la fonction « puissance » de la question précédente pour calculer l’équivalent décimal d’un
nombre binaire.
Rappel : (1011101)2 = 1X20 + 0X21 + 1X22 + 1X23+ 0X24 + 1X25 = (45)10
Exemple d’exécution :
Entrez le nombre binaire : 101101
L’équivalent décimal est : 45
Exercice 89 : Ecrire un programme permettant de compter le nombre de multiples (inférieurs à 1000) d’un nombre
entier donné par l’utilisateur, puis les afficher du plus grand au plus petit.
Exemple d’exécution :
Le nombre de multiples (<1000) de 120 est : 8
Les multiples de 120 par ordre décroissant :
960 – 840 – 720 – 600 – 480 – 360 – 240 - 120
Exercice 90 : Ecrire un programme permettant de saisir un tableau de 10 valeurs entières et de multiplier l’ensemble des
éléments du tableau par la valeur du nième élément du tableau, n étant saisi par l’utilisateur.
Exemple d’exécution :
Soit le tableau saisi : 8 – 4 – 6 – 2 – 4 – 12 – 6 – 14 – 10 – 8
N=4:
Tableau résultat : 4 – 2 – 3 – 1 – 2 – 6 – 3 – 7 – 5 – 4
Exemple d’exécution :
Entrez le nombre octal : 177
L’équivalent décimal est : 127
Exercice 92 : Ecrire un programme permettant de compter le nombre de puissances successives (inférieurs à 1000) d’un
nombre entier donné par l’utilisateur, puis de les afficher du plus grand au plus petit.
Rappel : Les puissances successives de 2 sont : 20 = 1, 21 = 2, 22 = 4, 8, 16, 32, 64, 128 …
Exemple d’exécution :
Le nombre de puissances successives (<1000) de 5 est : 5
Les puissances successives de 5 par ordre décroissant : 625, 125, 25, 5, 1
Exercice 93 : Ecrire un programme permettant de saisir un tableau de 10 valeurs entières et d’ajouter à l’ensemble des
éléments du tableau par la valeur du nième élément du tableau, n étant saisi par l’utilisateur.
Exemple d’exécution :
Soit le tableau saisi : 8 – 4 – 6 – 2 – 4 – 12 – 6 – 14 – 10 – 8
N=5:
Tableau résultat : 15 – 11 – 13 – 10 – 14 – 19 – 13 – 21 – 17 – 15
Exercice 94 : Ecrire une fonction nommée « puissance(x,y) » permettant de retourner xy , avec x et y des réels passés
en paramètres.
Ecrire un programme qui utilise la fonction « puissance » de la question précédente pour calculer la somme : 1/x1 + 1/x2
+ … + 1/xn pour x réel donné et n entier donné saisi au clavier.
Exemple d’exécution :
Entrez la valeur de x : 3
Entrez la valeur de n : 5
La somme est : 1.497942
Exercice 95 : Ecrire un programme qui permet d’entrer un tableau de n valeurs numériques ; et de les afficher sur deux
colonnes, de manière de retrouver ces valeurs dans leur ordre initial, si on les lit colonne par colonne.
Exemples d’exécution :
*** Répartition d’une suite de nombres sur deux colonnes ***
NB. Chaque ligne est affichée par une même et seule instruction de sortie.
Exercice 96 : Ecrire un programme qui permet de saisir et de trier les éléments (entiers) d’un tableau au fur et à mesure
de la saisie de ses éléments (c'est-à-dire, le programme permettra au début de son exécution la saisie de la taille et des
valeurs du tableau, en insérant chaque valeur reçue, de manière à ce qu’on fin de la saisie, le tableau soit trié, par ordre
croissant. Les tableaux intermédiaires triés doivent être affichés au fur et à mesure de la saisie des valeurs).
Exemple d’exécution :
*** Recherche dans un tableau ***
Donnez le nombre de valeur de votre tableau : 6
Donnez une valeur de votre tableau :
4
Valeurs du tableau intermédiaire : 4
Donnez une valeur de votre tableau :
Exercice 97 : Ecrire un programme qui permet de chercher et afficher tous les entiers « cubiques » ayant trois chiffres.
Un entier naturel de trois chiffres (compris entre 100 et 999) est cubique s’il est égal à la somme des cubes de trois
chiffres.
Exemple : 153 est cubique puisque 153 = 13 + 53 + 33
Exercice 98 : Ecrire un programme qui permet d’entrer un tableau de n valeurs numériques ; et de les afficher sur deux
colonnes, de manière de retrouver ces valeurs dans leur ordre initial, si on les lit ligne par ligne.
Exemples d’exécution :
*** Répartition d’une suite de nombres sur deux colonnes ***
NB. Chaque ligne est affichée par une même et seule instruction de sortie.
Exercice 99 : Ecrire une fonction qui calcule le factoriel d’un entier n donné (le factoriel d’un nombre n s’écrit n! et n! = 1
x 2 x 3 x … x n. Exemple : 3! = 1 x 2 x 3 = 6).
Ecrire une fonction qui permet de calculer le nombre de combinaisons de p parmi n éléments
n
p
n n!
Rappel : p = ----------
p ! (n – p) !
Exercice 100 : Ecrire un programme qui permet d’entrer un tableau de n valeurs numériques ; puis de chercher et
afficher toutes ses valeurs, distincts, avec pour chacune les positions où elle apparaît.
Exemple :
Soit le tableau : 1 - 2 – 3 – 1 – 2 – 10 - 1
Le résultat :
Les positions de 1 sont : 1, 4, 7
Les positions de 2 sont : 2, 5
Les positions de 3 sont : 3
Les positions de 10 sont : 6
Exercice 101 : Ecrire un programme qui permet d’entrer un tableau de n valeurs numériques ; puis d’inter changer ses
éléments de manière que la 1ère valeur devienne la dernière, la deuxième devienne l’avant dernière, … ; et l’afficher, dans
ce nouvel ordre.
Exemples d’exécution :
*** Inversion d’une suite de nombres ***
NB. Chaque ligne est affichée par une même et seule instruction de sortie.
Exercice 102 : Ecrire une fonction qui calcule le factoriel d’un entier n donné (le factoriel d’un nombre n s’écrit n! et n! =
1 x 2 x 3 x … x n. Exemple : 3! = 1 x 2 x 3 = 6).
Ecrire une fonction qui permet de calculer le nombre d’arrangements de p parmi n éléments
n
A p
n n!
Rappel : Ap = ----------
(n – p) !
Exercice 103 : Ecrire un programme qui permet d’entrer un tableau de n valeurs numériques ; puis de compter et
afficher le nombre de ses valeurs distinctes.
Exercice 104 : Ecrire un programme qui permet d’entrer deux nombres réels et d’afficher l’une des deux mentions :
« Positif » ou « Négatif », suivant le signe de leur produit, sans toutefois le calculer.
Exercice 105 : Ecrire un programme qui simule une caisse enregistreuse. Le programme permettra à l’utilisateur d’entrer
une série de prix des achats d’un client ; et arrêter la lecture quand l’utilisateur entre 0. Il affichera ensuite le montant
total qui correspond à ces achats.
Le programme permettra par la suite d’entrer la somme d’argents présentée par le client, et de calculer le montant qu’on
doit lui remettre, écrit en nombre de billets et pièces qui le constituent, de manière qu’on en utilisera un minimum, soit
d’utiliser les billets et pièces dans le sens décroissant de leurs valeurs.
Exemple d’exécution :
Exercice 106 : Un nombre palindrome est nombre symétrique (qui peut être lu de gauche à droite, comme de droite à
gauche) ; soit la forme c1 c2 c3 … | … c3 c2 c1, où les ci sont les chiffres du nombre. Tous les chiffres 0, 1, 2, 3, 4, 5, 6,
7, 8, 9 sont des palindromes à un chiffre. Il y en a 9 palindromes à deux chiffres : 11, 22, 33, 44, 55, 66, 77, 88, 99.
Ecrire un programme qui calcule et affiche, de la même manière, le nombre des nombres palindromes de trois chiffres ;
suivi de ceux de quatre chiffres.
Exercice 107 : Soit la suite numérique définie par A0 = 1 ; An = nAn-1 (pour tout n ≥ 1).
Ecrire un programme qui calcule la valeur numérique du polynôme de degré n :
P(x) = Anxn + An-1xn-1 + … + A1x + A0
Exercice 108 : Ecrire un programme permettant à l’utilisateur d’entrer une suite de valeurs numériques, indifféremment
positifs et négatifs, terminées par un zéro ; puis regrouper les valeurs négatives au début du tableau, et celles qui sont
Exemple :
La série 3 -6 -3 4 2 -15 -2 13
deviendra -6 -3 -15 -2 3 4 2 13
Exercice 109 : Ecrire un programme qui inverse l’ordre des chiffres d’un nombre donné par l’utilisateur.
Exemple : le nombre 1234 deviendra 4321.
Exercice 110 : Un nombre parfait est un nombre entier naturel qui égal à la somme de ses diviseurs stricts ; c'est-à-dire
ses diviseurs entiers positifs, autres que lui-même.
Le premier nombre parfait est 6, puisque la somme de ses diviseurs stricts 1, 2 et 3 est égale à 6 (1 + 2 + 3 = 6).
Ecrire un programme qui cherche tous les nombres parfaits inférieurs à une limite donnée par l’utilisateur.
Exercice 111 : Ecrire un programme qui permet de trouver les couples de nombres amis inférieurs à une limite, donné
par l’utilisateur.
Deux nombres sont dits « amis » si la somme des diviseurs stricts de l’un est égale à l’autre et inversement.
C’est le cas, par exemple, de 220 et 284 puisque :
220 a pour diviseurs : 1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110 (somme=284) ; et 284 a pour diviseurs : 1, 2, 4, 71 et 142
(somme=220).
Exercice 1 :
Début
N=3
Variables i, s, t(n) : entier
Pour i=1 à n
Lire t(i)
Finpour
Tantque i<>n faire
Ecrire (« Saisir un entier »)
Lire t(i)
i=i+1
fintantque
s=0
pour i=1 à n
s=s+1
Ecrire s
Finpour
Fin
Le programme devrait permettre de saisir des nombres entiers dans un tableau de dimension n,
et de faire ensuite la somme de ces entiers et l’afficher à l’écran.
Détecter les erreurs qui empêchent ce programme de tourner.
L’objectif de l’exercice est de traduire une phrase en JAVANAIS. Le principe est le suivant :
dans une phrase, une fois qu’on rencontre une consonne suivie d’une voyelle, on insère la chaîne
de caractères « VA » entre les deux.
Exemple :
Je suis malade JVAe sVAuis mVAalVAadVAe
Principe de fonctionnement :
On utilisera un tableau « mot » dans lequel sera effectuée la saisie du mot avant de le placer
dans le tableau « Dictionnaire ».
Mot
b a r è m e
Dictionnaire
a u t o
v i l l e
Pour insérer le contenu du « mot » dans « dictionnaire », il faudrait chercher le numéro de ligne
adéquat afin de respecter l’ordre syntaxique exigé par « Dictionnaire ».
Dans notre exemple, le mot barème doit être insèré entre auto et ville.
L’algorithme doit translater ville vers le bas, et inserer barème dans la ligne vide
a u t o a u t o
b a r è m e
v i l l e v i l l e
Ecrire :
3. la procédure Lecture qui permet de saisir un mot dans le tableau « mot » caractère
par caractère. La fin du mot est indiquée par le caractère $.
4. La fonction Comparaison permettant de connaître n1 le nombre de ligne où
l’insertion doit s’effectuer. (dans notre cas n1=2).
5. La procédure Décalage pour effectuer un décalage dans le tableau dictionnaire à
partir de la ligne n1 vers le bas.
6. La procédure Transfert à fin de transférer le contenu de « mot » vers la ligne n1 de
« Dictionnaire ».
i- Exemple
1 2 3 4 5 6 7 8 9 10
1 1
2 1 1
3 1 2 1
4 1 3 3 1
5 1 4 6 4 1
6 1 5 10 10 5 1
7 1 6 15 20 15 6 1
8 1 7 21 35 35 21 7 1
9 1 8 28 56 70 56 28 8 1
10 1 9 36 84 126 126 84 36 9 1
iii- Questions:
a- Ecrire la procédure Triangle_Pascal() pour construire un triangle de taille n,
b- Ecrire la fonction Verification_Somme() qui doit vérifier que la somme des
éléments de la ligne i est le double de celui de i-1,
c- Ecrire la fonction Verification_symetrie() qui vérifie que chaque ligne est
symétrique par rapport à son centre,
d- Comment peut-on exploiter cette caractéristique dans la construction d’un triangle
de Pascal. Ecrire, dans ce cas, une deuxième version de la procédure
Triangle_Pascal().
Il existe une méthode de détermination de nombres premiers connue sous le nom de « Crible d’
Eratosthène ». elle permet d’obtenir tous les nombres premiers inférieurs à une valeur donnée n.
1 2 3 5 7 11 13 17 19 23 29 31 37
iii) Questions :
Le but de l’exercice et de lire un verbe du ^premier groupe dans le tableau Verbe et en afficher la
conjugaison au présent de l’indicatif.
Je chante
Tu chantes
Il chante
Nous chantons
Vous chantez
Ils chantent
On s’assurera que le mot fourni se termine bien par « er ». on supposera qu’il s’agit d’un verbe
régulier ; autrement dit, on admettra que l’utilisateur ne fournira pas un verbe tel que manger.
(le programme afficherait alors : nous mangeons !!).
Questions de cours :
Début
Lire A, B ;
Qç 0 ;
Tantque (A >= B) faire
A ç A – B; Q ç Q + 1;
FinTantque
R ç A;
Afficher (Q, R);
Fin.
Deux entiers n1 et n2 sont dits « amis » si les sommes des chiffres les composants sont
identiques (Ex : n1=65 et n2=56). Ils sont dits « frères » si chaque chiffre constituant le premier
nombre entier n1 apparaît au moins une fois dans le deuxième nombre n2 et respectivement, si
chaque chiffre constituant le deuxième nombre entier n2 apparaît au moins une fois dans le
premier nombre n1 (n1=25 et n2=522).
On suppose que vous disposez d’une fonction « T » qui, si on lui fournit un entier renvoie un
tableau de chiffres qui se termine par un point.
253
T 2 5 3 .
- Ecrire la fonction ami(…..), qui reçoit les deux nombres n1 et n2 elle doit vérifier s’ils sont
amis.
- Ecrire la fonction frères(…..), qui reçoit les deux nombres n1 et n2 elle doit vérifier s’ils
sont frères.
Exercice 2 :
Ecrivez un algorithme pour la fonction tasser(s1, s2) qui supprime tous les caractères de s1 qui
figure aussi dans la chaîne s2 (une chaîne de caractères est saisie dans un tableau de caractères
de taille maximale 80. la chaîne se termine par un point).
Exemple : S1 : xyl.
S2 : abxjklefyxlmnuvxyz.
Exercice 1 : (2 points)
Traduire par un algorithme le texte suivant : « Dans un magasin, les personnes mariées
bénéficient de 5 % de réduction sur certains articles, alors que les étudiants bénéficient de 10
%»
Exercice 2 : (6 points)
Soit le texte stocké dans un tableau de caractères de taille max=1000. Le caractère $ indique la
fin du texte.
On définit un mot comme étant une séquence de caractères précédée obligatoirement d'un bloc,
qui ne contient pas le caractère espace ni de caractère de ponctuation. La fin du mot est indiquée
soit par le caractère espace soit par l'un des caractères de ponctuation.
Les caractères de ponctuation sont: . , ;
Chercher le mot "programme" dans le texte déjà saisi dans le tableau (T) et afficher le nombre de
fois où il apparaît dans le texte.
Exercice 2 : ( 7 points)
Les points cols d'un tableau à deux dimensions sont les éléments du tableau qui sont maximum
sur leur ligne et minimum sur leur colonne; ou minimum sur leur ligne et maximum sur leur
colonne.
Ecrire la proc édure qui:
1. Reçoit une ligne et retourne la valeur du maximum et la case où elle existe.
2. Reçoit le numéro de colonne du maximum retrouvé, et retourne un booléen "vrai" dans le cas
où il est minimum sur sa colonne et "faux" dans le cas contraire.
3. Reçoit une ligne et retourne la valeur du minimum et la case où elle existe.
4. Reçoit le nombre de colonne du minimum retrouvé, et retourne un booléen "vrai" dans le cas
où il est maximum sur sa colonne et "faux" dans le cas contraire.
5. Ecrire le programme principal qui recherche dans un tableau à deux dimensions les points cols
en utilisant les procédures précédentes.
Exercice 3 : ( 8 points)
Chaque élève d'une classe s'est vu attribuer dix notes correspondant à dix matières (une note
fictive égale à -1 correspond à une absence lors de l'épreuve de contrôle). A chacune de ces
matières correspond un coefficient.
On suppose que le nombre d'élèves ne dépasse pas 50.
- Pour tous les calculs de moyenne, on ne tient pas compte des absences.
- On ne calcule la moyenne effective d'un élève que s'il a été présent au moins à un contrôle.
- On note par -1 la moyenne d'un élève absent à tous les contrôles.
Nous allons utiliser un tableau NOTE de 50 lignes et 50 colonnes. Chaque ligne correspond à un
élève, et chaque colonne à une matière. Le tableau MOY de 50 lignes permet de stocker la
moyenne de chaque élève. On utilise un tableau COEF de 10 lignes, dans lequel on stocke le
coefficient de chaque matière.
L'ordre dans COEF correspond à l'ordre des colonnes de NOTE: par exemple si la première
colonne de NOTE correspond aux notes de mathématique, on doit trouver en COEF(1) le
coefficient mathématique.
Ecrire un algorithme qui permettrait de calculer:
1. La moyenne de chaque élève.
2. La moyenne générale de la classe
3. Pour chaque matière, la moyenne de la classe et le pourcentage d'absentéisme.
EXERCICE 1 : 6 Pts
Soit le tableau "JoursSemaine" qu'on peut remplir avec les noms des jours de la semaine
(Dimanche, Lundi, Mardi,...)
EXERCICE 2 : 4 Pts
1. Ecrire une procédure qui permet de calculer le nombre de voyelles. (1.5 Pts)
2. Ecrire une procédure qui permet de calculer le nombre d’espaces. (1.5 Pts)
3. Ecrire une procédure qui permet de rechercher et remplacer le mot « procédurale » par
« événementielle ». (1 Pts)
OFPPT مكـتــب التــكـويــن المهنـي و إنعاش الشغــل
Office de la Formation Professionnelle
et de la Promotion du Travail
Exercice 3 : 10 Pts
On veut créer une petite application de gestion de prêts des ouvrages auprès d’une bibliothèque
par les étudiants.
Exercice 1 :(4pts)
Variables A, B, C en Entier
Début
A ← -6
B ← 4
A ← A + B
B ← A * B
C ← A + B
Fin
Exercice 2 :(6pts)
Exercice 3: (6pts)
Exercice 4 : (6pts)
Exercice 5 : (6pts)
Exercice 6 : (6pts)
Exercice 7: (6pts)
Exercice 1 : (4pts)
a. Quelles seront les valeurs des variables A, B et C après
exécution des instructions suivantes ? (2 pts)
Variables A, B, C en Entier
Début
A ← 3
B ← 1
A ← A - B
B ← A + B
C ← A / B
Fin
Exercice 2 : (6pts)
a. Ecrire un algorithme qui lit un nombre entier au clavier et qui
affiche s’il est pair ou impair. (2pts)
Exercice 4 : (5pts)
Ecrire un algorithme qui demande à l’utilisateur de saisir un
tableau de réels et qui permet de le trier en ordre croissant.
(Utiliser le tri par à bulle)
Exercice 5 : (6pts)
Ecrire un programme qui affiche tous les nombres parfaits
inférieurs à une limite donnée par l’utilisateur
Un nombre est dit parfait s’il est égal à la somme de ses diviseurs
stricts.
Exercice 6: (6pts)
Exercice 7: (5pts)
Ecrire un algorithme qui lit une matrice carrée ainsi que sa taille
au clavier. Ensuite il calcule et affiche sa trace.
Exercice 1 (3pts)
On considère deux tableaux contenants des entiers. Chaque entier n’apparaît qu’en un seul
exemplaire dans chaque tableau. Ecrire un programme qui affiche l’intersection des deux
tableaux.
10 5 12 7 19 28 6
Exemple :
5 14 19 2 6 29 3 7
Exercice 1 (3pts)
On considère deux tableaux contenants des entiers non nuls. Chaque entier n’apparaît
qu’en un seul exemplaire dans chaque tableau. Ecrire une procédure qui affiche les
éléments du premier tableau qui ont un triple dans le deuxième tableau.
Exemple :
10 5 12 7 1 28 6
18 17 21 25 30 99 3 15
Exercice 3 (11pts)
On souhaite écrire un programme permettant de gérer l’ensemble des stagiaires d’une classe.
Chaque stagiaire est connue par : un numéro de CIN, un nom, un prénom ,trois notes, et une
moyenne representant la moyenne des trois notes precedentes.
a. Définir la structure Stagiaire (CIN, Nom, Prenom, note(3), moyenne), et un tableau T
de type Stagiaire permettant de faire la gestion des stagiaires de la classe.
b. Saisir un certain nombre de stagiaires dans le tableau T.
c. Trier les stagiaires par ordre croissant selon leurs numéros de CIN en utilisant le tri par
bulle.
Il faut ensuite :
1. Afficher tous les stagiaires.
2. Supprimer de la classe un stagiaire dont le CIN est donnée par l’utilisateur.
3. Modifier les notes et ainsi la moyenne d’un Stagiaire en connaissant son num de CIN.
4. Ajouter un nouvel stagiaire, dont les informations sont saisies au clavier. L’ajout sera
fait dans le bon endroit selon le CIN de ce stagiaire.
5. Sauvegarder les informations de tous les stagiaires dans un fichier « Stagiaire.txt ».
Note : Faire un menu interactif pour accéder aux services 1, 2, 3, 4 et 5
1
www.MegaTuto.com
Office de la Formation Professionnelle et de la Promotion du Travail
Examen de Fin de Module
Module : Techniques de programmation structurée
Niveau : 1° Année Filière : TDI Durée : 2h00 Variante : 3
Exercice 1 (3pts)
Ecrire un algorithme qui pour chaque élément d’un tableau T affiche cet élément si son triple
est aussi présent dans le tableau. Les éléments sont rangés dans un ordre aléatoire à l’intérieur
du tableau.
Exemple :
1 16 3 9 10 27
1
www.MegaTuto.com
Note : Faire un menu interactif pour accéder aux services 1, 2, 3, 4 et 5
2
www.MegaTuto.com
Office de la Formation Professionnelle et de la Promotion du Travail
Examen de Fin de Module
Module : Techniques de programmation structurée
Niveau : 1° Année Filière : TDI Durée : 2h00 Variante : 4
Exercice 1 (3pts)
Ecrire un algorithme qui pour chaque élément d’un tableau T affiche cet élément si son carré
est aussi présent dans le tableau. Les éléments sont rangés dans un ordre aléatoire à l’intérieur
du tableau.
Exemple :
1 16 3 9 10 100
1
www.MegaTuto.com
Office de la Formation Professionnelle et de la Promotion du Travail
Examen de Fin de Module
Module : Techniques de programmation structurée
Niveau : 1° Année Filière : TDI Durée : 2h00 Variante : 5
Exercice 1 (4pts)
1. Ecrire un algorithme qui affiche un message indiquant si un nombre a, saisi par
l’utilisateur, est parfait ou non. Un nombre est dit parfait s’il est égal à la somme de
ses diviseurs stricts.
Exemple : 28 = 1 + 2 + 4 + 7 + 14
2. Écrire un programme qui affiche tous les nombres parfaits inférieurs ou égaux à un
nombre donné N (N étant donné par l’utilisateur).
Exercice 2 (6pts)
1. Ecrire une fonction SommeCube permettant de calculer la somme des entiers jusqu’à
un nombre N passé en paramètre. (S= 13 + 23 + 33+ …. +N3)
2. Ecrire un programme utilisant la fonction SommCube pour calculer la somme
suivante : S=13 + (13+23) + (13+23+33) +…. + (13+23+…N3), N étant donné par
l’utilisateur.
3. Ecrire une procédure permettant d’afficher tous les nombres pairs inférieurs à un
nombre n passé en paramètre.
Exercice 3 (10pts)
Le zoo Ain Sbâa de Casablanca va être aménagé. Pour cela, la direction désire, dans le cadre
de cet aménagement, informatiser le système de gestion des animaux du zoo. Chaque animal
est connue par :
Un code
Une catégorie
Une race
Un pays d’origine.
a. Définir la structure Animal (Code, Categorie, Race, Pays), et un tableau T de type
Animal permettant de faire la gestion des animaux du zoo.
b. Saisir un certain nombre d’animaux dans le tableau T.
c. Trier les animaux du zoo par ordre croissant selon leurs codes en utilisant le tri par
insertion.
Il faut ensuite :
1. Afficher tous les animaux du zoo.
2. Supprimer du zoo un animal dont le code est donnée par l’utilisateur.
3. Ajouter un nouvel animal, dont les informations sont saisies au clavier, au zoo. L’ajout
sera fait dans le bon endroit selon le code de cet animal.
4. Sauvegarder les informations de tous les animaux dans un fichier « zoo.txt ».
1
www.MegaTuto.com
Note : Faire un menu interactif pour accéder aux services 1, 2, 3 et 4
2
www.MegaTuto.com
Office de la Formation Professionnelle et de la Promotion du Travail
Examen de Fin de Module
Module : Techniques de programmation structurée
Niveau : 1° Année Filière : TDI Durée : 2h00 Variante : 6
Exercice 1 (4pts)
1. Ecrire un algorithme qui affiche un message indiquant si un nombre a, saisi par
l’utilisateur, est premier ou non. (Un nombre premier est un entier naturel qui admet
exactement deux diviseurs distincts entiers et positifs (qui sont alors 1 et lui-même) )
2. Écrire un programme qui affiche tous les nombres premiers inférieurs ou égaux à un
nombre donné N (N étant donné par l’utilisateur).
Exercice 2 (6pts)
1. Ecrire une fonction ProduitCarré permettant de calculer le produit des entiers jusqu’à
un nombre N passé en paramètre. (P= 13 * 23 * 33* …. *N3)
2. Ecrire un programme utilisant la fonction ProduitCarré pour calculer la somme
suivante : S=13 + (13*23) + (13*23*33) +…. + (13*23*…*N3), N étant donné par
l’utilisateur.
3. Ecrire une procédure permettant d’afficher tous les nombres pairs inférieurs à un
nombre n passé en paramètre.
Exercice 3 (10pts)
On souhaite faire la gestion des athlètes participant à un marathon. Un athlète est caractérisé
par un numéro, un nom, un prénom, une nationalité et un meilleur temps.
a. Définir la structure Athlète (Num, Nom, Prenom, Nation,MeilTemp), et un tableau T
de type Athlète permettant de faire la gestion des Athlète de la course.
b. Saisir un certain nombre d’Athlètes dans le tableau T.
c. Trier les Athlètes par ordre croissant selon leurs numéros en utilisant le tri par
insertion.
Il faut ensuite :
1. Afficher tous les Athlètes de la course.
2. Supprimer un Athlète dont le numéro est donnée par l’utilisateur.
3. Ajouter un nouvel Athlète, dont les informations sont saisies au clavier. L’ajout sera
fait dans le bon endroit selon numéro de l’Athlète.
4. Modifier le meilleur temps d’un Athlète en connaissant son numéro.
5. Sauvegarder les informations de tous les animaux dans un fichier « Course.txt ».
1
www.MegaTuto.com
Office de la Formation Professionnelle et de la Promotion du Travail
Examen de Fin de Module
Module : Techniques de programmation structurée
Niveau : 1° Année Filière : TDI Durée : 2h00 Variante : 7
Exercice 1 (4pts)
1. Ecrire un algorithme qui affiche un message indiquant si un nombre a, saisi par
l’utilisateur, est premier ou non. Un nombre est dit premier s’il n’est divisible que par
1 et lui-même.
Exemple des nombres premiers : 1, 2, 3, 5, 7, 11, 13, 17, 19
2. Écrire un programme qui affiche tous les nombres premiers inférieurs ou égaux à un
nombre donné N (N étant donné par l’utilisateur).
Exercice 2 (6pts)
1. Ecrire une procédure TableMultiplication permettant d’afficher la table de
multiplication d’un nombre N passé en paramètre.
Exemple : la table de multiplication de 5 est : 0 5 10 15 20 25 30 35 40 45 50
2. Ecrire un programme utilisant la procédure TableMultiplication pour afficher la table
de multiplication des nombres compris entre 1 et 10.
3. Ecrire une procédure permettant d’afficher tous les nombres impairs inférieurs à un
nombre n passé en paramètre.
Exercice 3 (10pts)
Pour automatiser la gestion de ses adhérents, une association culturelle demande à tous ses
adhérents de lui fournir les informations suivantes :
Le numéro de l’adhérent.
L’activité dispensée au sein de l’association (sport, voyage, culture..).
Le nom de l’adhérent.
L’adresse de l’adhérent
a. Définir la structure Adherent (Numero, Activite, Nom, Adresse), et un tableau T de
type Adherent permettant de faire la gestion des adhérents de l’association.
b. Saisir un certain nombre d’adhérents dans le tableau T.
c. Trier les adhérents de l’association par ordre croissant selon leurs numéros en utilisant
le tri par comptage.
Il faut ensuite :
1. Afficher tous les adhérents de l’association.
2. Ajouter un nouvel adhérent, dont les informations sont saisies au clavier, à
l’association. L’ajout sera fait dans le bon endroit selon le numéro de cet adhérent.
3. Supprimer de l’association un adhérent dont le numéro est donnée par l’utilisateur.
4. Sauvegarder les informations de tous les adhérents dans un fichier « adhérents.txt ».
1
www.MegaTuto.com
Office de la Formation Professionnelle et de la Promotion du Travail
Examen de Fin de Module
Module : Techniques de programmation structurée
Niveau : 1° Année Filière : TDI Durée : 2h00 Variante : 8
Exercice 1 (4pts)
1. Un tableau T de dimension N contenant N valeurs entières. Écrire un programme qui supprime
les éléments qui existent au moins trois fois dans le tableau T.
2. Écrire un programme qui affiche tous les nombres premiers inférieurs ou égaux à un
nombre donné N (N étant donné par l’utilisateur).
Exercice 2 (6pts)
1. Ecrire une fonction Produit permettant de calculer le produit des entiers jusqu’à un
nombre N passé en paramètre. (P= 1 * 2 * 3* …. *N)
2. Ecrire un programme utilisant la fonction Produit pour calculer le produit suivante :
P=1/1 + 1/(1*2) + 1/(1*2*3) +…. + 1/(1*2*…N) N étant donné par l’utilisateur
3. Ecrire une procédure permettant d’afficher tous les nombres pairs inférieurs à un
nombre n passé en paramètre.
Exercice 3 (10pts)
On souhaite faire la gestion des chambres d’un hôtel. Une chambre est caracterisée par un
numéro, un nombre de lits, un état (1 : réservée, 0 sinon) et un prix.
a. Définir la structure Chambre (Numero, NbreLits, Etat, Prix), et un tableau T de type
Chambre permettant de faire la gestion des Chambres de l’hôtel.
b. Saisir un certain nombre de Chambres dans le tableau T.
c. Trier les Chambres de l’hôtel par ordre croissant selon leurs numéros en utilisant le
tri par comptage.
Il faut ensuite :
1. Afficher tous les Chambres de l’hôtel.
2. Ajouter une nouvelle Chambre, dont les informations sont saisies au clavier, à l’hôtel.
L’ajout sera fait dans le bon endroit selon le numéro de cette Chambre.
3. Supprimer une Chambre dont le numéro est donnée par l’utilisateur.
4. Modifier l’état d’une chambre en connaissant son numéro.
5. Sauvegarder les informations de tous les Chambres dans un fichier « Hotel.txt ».
1
www.MegaTuto.com
Visitez notre site : www.forumofppt.com
Visitez notre site : www.info-ofppt.com
Notre page Facebook : www.facebook.com/forum.ofppt
Notre page Facebook : www.facebook.com/infoofpptrss
ISTA HAY RIAD 19 avril 2011
Groupe : TDI 1 C & TDI 1D
Exercice 1 : (4pts)
1. Ecrire une fonction qui teste si une chaine de caractères est un palindrome ou non.
2. Soit le tableau suivant :
5 3 1 9 5 3 11
Exécuter l’algorithme de tri par comptage dans l’ordre croissant pour le tableau précédent.
Détailler toutes les étapes.
Exercice 2 : (4pts)
On dispose de deux fichiers contenant des nombres triés par ordre croissant. Fusionner les
éléments des deux fichiers dans un 3ème fichier ou les nombres seront triés par ordre
croissant.
Exercice 3: (4pts)
Les points cols d'un tableau à deux dimensions sont les éléments du tableau qui sont
minimum sur leur ligne et maximum sur leur colonne.
Ecrire le programme principal qui recherche dans un tableau à deux dimensions les points
cols.
Exemple : soit le tableau suivant T[2][2]
1 2 3
-7 8 9
-6 -3 -4
T[0][0]=1
T[2][1]=-3
Exercice 4: (4pts)
Exercice 5: (4pts)
Un carré magique est un carré rempli de nombres qui, lorsque l’on en fait la somme sur
chaque ligne, colonne ou diagonale, donne le même résultat. Pour simplifier le travail nous
ne considérerions ici que des carrés d’ordre impair.
Ecrire un programme qui teste si un carré est magique.
Exemple de carré d’ordre 3 :
8 1 6
3 5 7
4 9 2
Une constante en C, peut être définie par le mot clé const et ne peut changer
de valeur au cours d’exécution d’un programme.
Un tableau permet de faire référence à ces valeurs connexes par le même nom
et d'utiliser un numéro pour les distinguer.
Un tableau dynamique est un tableau qui s'agrandit ou se rétrécit
automatiquement selon les besoins.
Un compilateur est un programme chargé de traduire le langage machine en
langage de programmation haut niveau.
Exercice
On souhaite gérer les utilisateurs d'une application. Les informations sur ces utilisateurs seront
stockées par défaut dans le répertoire racine (C:\ par exemple) au sein d'un fichier utilisateurs.dat.
Les informations décrivant un utilisateur sont :
IDUtilisateur chaine de caractères (25 au maximum)
MotPasse chaine de caractères (15 au maximum)
NomUtilisateur chaine de caractères (15 au maximum)
1. Créer une structure représentant un utilisateur. (1 pt)
2. Ecrire une fonction ajouterUtilisateur qui prend en paramètres un File représentant le fichier et
un utilisateur et qui permet d’ajouter un utilisateur au fichier. (4 pt)
3. Ecrire une fonction lireUtilisateurs qui prend comme arguments un tableau d’utilisateurs USERS
et un File représentant le fichier et qui permet de remplir le tableau par les enregistrements du
fichier. (4 pt)
4. Ecrire un programme principale qui permet de : (6 pt)
• Demander le nombre des utilisateurs de l’application.
• Entrer les informations sur les utilisateurs et les ajouter au fichier utilisateurs.dat (utiliser
la fonction ajouterUtilisateur)
• Afficher la liste des utilisateurs enregistrés sur le fichier utilisateurs.dat (utiliser la
fonction lireUtilisateurs)
Attention : L’ouverture et la fermeture du fichier se font au niveau du programme principal.
1
Office de la Formation Professionnelle
OFPPT
et de la Promotion du Travail
Etablissement : ISTA TICDirection
SAFI Régionale Tensift Atlantique
Examen de fin de module : Langage de Programmation Structurée
2010/2011
Filière: TDI Groupe(s) : 2/4/5
Niveau : TS
Durée : 01h45 Barème: …/20
Exercice 1 (5 pt)
Corriger le programme suivant pour pouvoir afficher tous les diviseurs d’un nombre saisi au clavier :
#include<stdio.h>
#include<stdlib.h>
int main(){
int nbr, div;
printf("Entrer un nombre\n") ;
scanf("%d", &nbr) ;
while (div<nbr){
if(nbr / div == 0) div+=1;
}
printf("%d\n", div);
getchar();
return 0;
}
Exercice 2
1
Office de la Formation Professionnelle
OFPPT
et de la Promotion du Travail
Etablissement : ISTA TICDirection
SAFI Régionale Tensift Atlantique
Examen de fin de module : Langage de Programmation Structurée
2010/2011
Filière: TDI Groupe(s) : 2/4/5
Niveau : TS
Durée : 01h45 Barème: …/20
QCM (5 pt)
1. Que renvoie la fonction strcmp (comparaison de chaînes) si les 2 chaînes comparées sont
identiques ?
a. 1
b. 0
c. -1
2. Ce programme a un défaut. Mais lequel ?
main(){
char ville[100];
printf("Dans quelle ville habitez-vous ? ");
scanf("%s", &ville);
printf("Vous habitez %s, je connais bien cette ville !", ville);
}
a. Il manque un & devant la variable "ville" dans le printf
b. Il manque une * devant la variable "ville" dans la déclaration de la variable.
c. Il y a un & en trop devant "ville" dans le scanf.
3. De quel type doit être le pointeur de fichier ?
a. FILE
b. FILE*
c. File
d. File*
4. Laquelle de ces affirmations est fausse ?
a. Une fonction en C peut ne pas renvoyer une valeur
b. Une fonction en C peut renvoyer une valeur de n’importe quel type
c. Une fonction peut renvoyer plusieurs valeurs
5. Dans quel cas l'instruction return n'est pas obligatoire ?
a. Quand la fonction ne prend aucun paramètre en entrée
b. Quand la fonction est de type void
c. Quand la fonction doit renvoyer 0
Exercice
On veut créer un programme pour gérer les filières et les modules enseignés au sein de notre
établissement.
Chaque module est défini par son numéro (entier) et son intitulé (Chaîne de caractères).
Toute filière de notre établissement est définie par son code (Chaîne de caractères), son intitulé
(Chaine de caractères), nombre de modules (entier) et l’ensemble des modules liés à cette filière
(tableau d’entiers –maximum 20 modules-).
1
2. Créer une fonction chercherModule qui permet de vérifier si le numéro de module passé en
paramètre existe sur le fichier.
Cette fonction retourne 1 si on trouve le module sinon elle retourne -1. (4 pt)
3. Créer une structure Filiere. (1 pt)
4. Créer une fonction creerListeFiliere qui permet de :
Remplir un tableau de filières passé en paramètre. Le nombre de filières est aussi passé en
paramètre.
Avant de lier un numéro de module à une filière il faut vérifier s’il existe sur le fichier
listeModules.txt en utilisant la fonction chercherModule. Si le numéro ne correspond à aucun
module afficher un message d’erreur et redemander la saisie d’un autre numéro.
(6 pt)
2
OFPPT
Office de la Formation Professionnelle
et de la Promotion du Travail
Exercice 1 : (4pts)
#include<stdio.h>
Int main(){
int i, n,som ;
for(i=0,som=0; i<4 ; i++)
{
printf("donnez un entier");
scanf("%d",&n);
som+=n;
}
printf("somme : %d\n",som);
getch();
}
a. Quel est le résultat d’exécution de ce code si l’on fournit les valeurs : 3,4, 5,8.
b. Réécrire ce code en utilisant la boucle while.
Exercice 2 : (4pts)
Ecrire un programme qui permet de calculer la moyenne de valeurs fournies au clavier
avec un" dialogue" de ce type :
valeur 1 : 12
valeur 2 : 15.25
valeur 3 : 13.5
1
valeur 4 : 8.75
valeur 5 : -1
Moyenne de ces 4 valeurs : 12.37
Le nombre de valeurs n’est pas connu à priori et l’utilisateur peut en fournir autant qu’il le
désire, pour signaler qu’il a terminé, on convient qu’il fournira une valeur fictive négative.
Exercice 3: (4pts)
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own
getch, system("pause") or input loop */
FILE *fich1,*fich2;
char c;
int nbchar=0;
char nomF1[30],nomF2[30];
do{
printf("entrer le nom de fichier source \n");
scanf("%s",nomF1);
fich1=fopen(nomF1,"r");
if(!fich1)
printf("fichier introuvable !!!\n");
}while(!fich1);
fich2=fopen(nomF2,"w");
??????
fclose(fich1);
fclose(fich2);
getch();
}
a. Remplacer les ??????? par le code permettant de copier les 5 premiers caractères du
fichier source dans le fichier de destination
Exercice 4: (4pts)
#include<stdio.h>
main(){
char ch[128];
int j,i,nbrdee;
printf("saisir votre texte :\n");
gets(ch);
//calculer le nombre de ; dans le texte
?????
printf("le nombre de e est : %d\n",nbrdee);
!!!!!
2
//affichage apres enlevement des ; dans ch
printf("%s\n",ch);
}
a. Remplacer les ????? par le code permettant de compter le nombre de points virgules
dans le texte. (2pts)
b. Remplacer les !!!!!! par le code permettant d’enlever les points virgule ; du texte.
(2pts)
Exercice 5: (4pts)
#include<stdio.h>
#define nbArt 8
typedef struct {
int code;
char *lib;
float pu;
}Article;
Article articles [nbArt] = {
1,"Art_AAAA", 287.00,
2,"Art_BBBB", 650.20,
3,"Art_CCCC", 420.30,
4,"Art_DDDD", 320.90,
5,"Art_EEEE", 580.10,
6,"Art_FFFF", 200.00,
7,"Art_GGGG", 178.50,
8,"Art_HHHH", 87.50
};
3
OFPPT
Office de la Formation Professionnelle
et de la Promotion du Travail
Exercice 1: (4pts)
#include<stdio.h>
main(){
int i, n,som ;
for(i=0,som=0; i<4 ; i++)
{
printf("donnez un entier");
scanf("%d",&n);
som+=n;
}
printf("somme : %d\n",som);
getch();}
a. Quel est le résultat d’exécution de ce code si l’on fournit les valeurs : 34,2, -5,80
b. Réécrire le code en utilisant la boucle do…while
Exercice 2 : (4pts)
Calculer les caractères correspondants aux valeurs ASCII fournies au clavier avec un
dialogue de ce type :
Code ASSCII : 65
Ce code représente le caractère : A
Code ASSCII : 70
Ce code représente le caractère : F
1
Code ASSCII : 71
Ce code représente le caractère : G
Code ASSCII : -1
A bientôt !
Le nombre de codes n’est pas connu à priori et l’utilisateur peut en fournir autant qu’il le
désire, pour signaler qu’il a terminé, on convient qu’il fournira une valeur fictive négative.
Exercice 3: (4pts)
#include<stdio.h>
main(){
char ch[128];
int j,i,nbrespaces;
printf("saisir votre texte :\n");
gets(ch);
//calculer le nombre des espaces dans le texte
?????
printf("le nombre de e est : %d\n", nbrespaces);
!!!!!
//affichage apres enlevement remplacement des ; par des
//espace dans ch
printf("%s\n",ch);
}
a. Remplacer les ????? par le code permettant d’compter le nombre des espaces dans le
texte. (2pts)
b. Remplacer les !!!!!! par le code permettant remplacer les espaces par des ‘/’ dans le
texte. (2pts)
Exercice 4: (4pts)
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own
getch, system("pause") or input loop */
FILE *fich1,*fich2;
char c;
int nbchar=0;
char nomF1[30],nomF2[30];
do{
printf("entrer le nom de fichier source \n");
scanf("%s",nomF1);
fich1=fopen(nomF1,"r");
if(!fich1)
printf("fichier introuvable !!!\n");
}while(!fich1);
2
fich2=fopen(nomF2,"w");
??????
fclose(fich1);
fclose(fich2);
getch();
}
a. Remplacer les ??????? par le code permettant de copier les 5 premiers caractères du
fichier source dans le fichier de destination
Exercice 5: (4pts)
#include<stdio.h>
#define nbArt 8
typedef struct {
int code;
char *lib;
float pu;
}sArticles;
3
OFPPT
Office de la Formation Professionnelle
et de la Promotion du Travail
Exercice 1 :(4pts)
int A,B,C ;
A=-6 ;
B=4 ;
A=A + B ;
B=A + B ;
C=A + B ;
b. Expliquer le fonctionnement et la différence entre les boucles
While et do while (2 pts)
Exercice 2 :(6pts)
Exercice 3: (7pts)
Exercice 4 : (5pts)
Exercice 5 : (5pts)
Exercice 6 : (5pts)
Ecrire une fonction qui permet d’afficher la forme suivante. (le
nombre de lignes sera donné en paramètre)
Exemple : pour n=4
*
* *
* * *
* * * *
Exercice 7: (6pts)
Exercice 8: (2pts)
Exercice 1 :(4pts)
int A,B,C ;
A=-6 ;
B=5 ;
A=A * B ;
B=A % B ;
C=A - B ;
b. Expliquer le fonctionnement et la différence entre les boucles
While et for (2 pts)
Exercice 2 :(6pts)
Exercice 3: (7pts)
Exercice 5 : (5pts)
Exercice 6 : (5pts)
Ecrire une fonction qui permet d’afficher la forme suivante. (Le
nombre de lignes sera donné en paramètre)
Exemple : pour n=4
*
* *
* * *
* * * *
Exercice 7: (6pts)
Exercice 8: (2pts)