1. Professeur M.Qbadou Page 1/7
ENSET 2020-2021
1ère GLSID/BDCC
Programmation en langage C – Notions de base
TD/TP – Serie1
Sommaire
I. Structures de conditionnelles...........................................................................................................................2
Exercice 1-1 -Année Bissextile..............................................................................................................................2
Exercice 1-2 -Tri de deux entiers ..........................................................................................................................2
Exercice 1-3 -Tri de trois entiers...........................................................................................................................2
II. Structures itératives .........................................................................................................................................2
Exercice 2-1 –Calcul de Sommation .....................................................................................................................2
Exercice 2-2 –Recherche des Triplets de Pythagore.............................................................................................2
Exercice 2-3 –Nombre d’Armstrong.....................................................................................................................2
Exercice 2-4 –Diviseurs d’un entier ......................................................................................................................2
Exercice 2-5 – Diviseurs d’un entier .....................................................................................................................2
Exercice 2-6 – Calcul des termes de la suite de Fibonacci....................................................................................3
Exercice 2-7 – Calcul approché de la racine carré d’un réel y..............................................................................3
Exercice 2-8 – Calcul approché de la fonction arc tangente ................................................................................3
Exercice 2-9 – Evaluation de la valeur d’un polynôme.........................................................................................3
Exercice 2-10 – Calcul approché de la valeur de PI ..............................................................................................4
Exercice 2-11 – Manipulation de textes ...............................................................................................................4
III. Les tableaux – Manipulation des Vecteurs et matrices................................................................................4
Exercice 3-1 – Gestion d’une liste d’entiers – opérations de décalage................................................................4
Exercice 3-2 – Gestion d’une liste – opérations ensemblistes .............................................................................5
Exercice 3-3 - Gestion d’une liste de réels – tri et calculs statistiques................................................................6
Exercice3-4 : Ecart minimal dans une liste de nombre ........................................................................................6
Exercice 3-5 – Manipulation de matrices carrées ................................................................................................7
2. Professeur M.Qbadou Page 2/7
I. Structures de conditionnelles
Exercice 1-1 -Année Bissextile
Une année bissextile est une année de 366 jours, revenant tous les 4 ans et dont le mois de février
comporte 29 jours. Une année bissextile doit avoir son millésime divisible par 4. Mais si le millésime est
divisible par 100, il doit aussi l'être par 400. Autrement, une année A n’est pas bissextile si elle n'est pas
divisible par 4. Si A est divisible par 4, elle est bissextile sauf si elle est divisible par 100 et non pas par
400. Par exemple 2000 est bissextile ; 1700, 1800 et 1900 ne le sont pas.
Ecrire le programme Bissextile qui lit une année notée A qui détermine si cette année est bissextile ou
non.
Exercice 1-2 -Tri de deux entiers
Ecrire un programme qui lit deux entiers a et b et les afficher en ordre croissant.
Exercice 1-3 -Tri de trois entiers
Ecrire un programme qui lit trois entiers a, b et c et les afficher en ordre croissant.
II. Structures itératives
Exercice 2-1 –Calcul de Sommation
Ecrire un programme Som_Carres qui calcule pour un entier n la somme des carrées Som_carres = 1
+ 4 + … + n2
Exercice 2-2 –Recherche des Triplets de Pythagore
Ecrire le programme Pythagore qui recherche et compte tous les triplets pythagoriciens (x,y,z) tels que
1≤x≤y≤max, où max est un entier entré par l’utilisateur. On rappelle qu’un triplé pythagoricien est un
triplé d’entiers naturels (x,y,z) tels que 2
2
2
z
y
x
Exercice 2-3 –Nombre d’Armstrong
Un nombre d’Armstrong est entier naturel qui est égal à la somme des cubes de chiffres qui le
composent (en base 10). Par exemple, 153 est un nombre d’Armstrong car 3
3
3
3
5
1
153
. En
revanche 25 n’est pas un nombre d’Armstrong car 3
3
5
2
25
Ecrire le programme Armstrong qui affiche tous les nombres d’Armstrong inférieurs à 1000.
Exercice 2-4 –Diviseurs d’un entier
Ecrire un programme diviseurs qui prend en paramètre un entier n et qui affiche la liste de ses diviseurs.
Testez ce programme pour n = 6, n = 17, et n = 36.
Exercice 2-5 – Diviseurs d’un entier
Écrire un programme qui lit un entier positif N à plusieurs reprises, détermine si l'entier est déficient,
parfait ou abondant, et écrit en sortie le nombre avec sa classification.
3. Professeur M.Qbadou Page 3/7
Un entier positif N est parfait si la somme de ses diviseurs propres est égale au nombre lui-même. (Les
diviseurs propres comprennent 1 mais non le nombre lui-même.) Si la somme est inférieure à N, le
nombre est déficient, et si la somme est supérieure à N, le nombre est abondant.
Exercice 2-6 – Calcul des termes de la suite de Fibonacci
On considère la suite de Fibonacci définie par :
{
𝑢(0) = 0
𝑢(1) = 1
𝑢(𝑛) = 𝑢(𝑛 − 2) + 𝑢(𝑛 − 1) ∀ 𝑛 > 1
1. Ecrire une fonction récursive qui calcule le nème terme de cette suite
2. Donner l’arbre des appels récursifs pour calculer U(5)
3. Montrer par récurrence que la complexité de cette solution pour calculer U(n) est en ordre de
(
1 + √5
2
)
𝑛
4. Quels sonts les inconvénients de cette solution
5. Proposer une solution itérative permettant d’éviter les inconvénients de la solution récursive
6. Quelle est l’ordre de la complexité de cette solution
7. Proposer une solution permettant d’étudier la convergence du rapport U(n-1)/U(n)
Exercice 2-7 – Calcul approché de la racine carré d’un réel y
Soit 𝑦 un réel positif, le problème de calcul de la racine carrée 𝑥 = √𝑦 est équivalent à résoudre
l’équation 𝑓(𝑥) = 𝑥2
− 𝑦 = 0.
La méthode de Newton peut être utilisée pour trouver un schéma de calcul itératif de 𝑥 suivant :
𝑥𝑘+1 = 𝑥𝑘 +
𝑓(𝑥𝑘)
𝑓′(𝑥𝑘)
Appliquée à 𝑓(𝑥), on obtient le schéma de calcul numérique de 𝑥 = √𝑦 :
{
𝑥 = 0 𝑝𝑜𝑢𝑟 𝑦 = 0
{
𝑥0 = 𝑦
𝑥𝑘+1 =
1
2
(𝑥𝑘 +
𝑦
𝑥𝑘
)
Ecrire un programme de calcul approché de 𝑥 = √𝑦 en appliquant le schéma itératif ci-dessus.
Exercice 2-8 – Calcul approché de la fonction arc tangente
Ecrire un programme qui calcule le développement limité (DL) à l'ordre 2n+3 de la fonction arctan(x)
définie par : 𝒂𝒓𝒄𝒕𝒂𝒏( 𝒙) = 𝒙 −
𝒙𝟑
𝟑
+
𝒙𝟓
𝟓
−
𝒙𝟕
𝟕
+ ⋯ +
(−𝟏)𝒏 𝒙𝟐𝒏+𝟏
𝟐𝒏+𝟏
+ 𝑶(𝒙𝟐𝒏+𝟑
)
Exercice 2-9 – Evaluation de la valeur d’un polynôme
Pour exprimer un polynôme de degré n à coefficients et variable réels on utilise les deux schémas
suivants :
Schéma usuel : 0
0
1
1
1
1 ...
)
( x
a
x
a
x
a
x
a
x
P n
n
n
n
Schéma de Horner : 0
1
2
1 )
...
)
)
)
(...(((
)
( a
x
a
x
a
x
a
x
a
x
P n
n
n
4. Professeur M.Qbadou Page 4/7
Pour les deux schéma P(x) est défini par le tableau de coefficients réels A et par une variable réelle x(
on suppose de degré n limité à 10)
1. Déterminer le nombre de multiplications nécessaires pour évaluer P(x) pour les deux schémas
2. Ecrire le programme Eval_iterative pour évaluer P(x) en utilisant le schéma de Horner.
Exercice 2-10 – Calcul approché de la valeur de PI
Pi est un nombre, que l’on représente par la lettre grecque du même nom : π. C’est le rapport entre la
circonférence d’un cercle et son diamètre. On peut également le définir comme le rapport entre la superficie
d’un cercle et le carré de son rayon. Sa valeur approchée arrondie à 10–9
est 3,141 592 654 en écriture décimale.
De nombreuses formules, de physique, d’ingénierie et bien sûr de mathématiques, impliquent π, qui est une des
constantes les plus importantes des mathématiques. La détermination d’une valeur approchée suffisamment
précise de π, et la compréhension de sa nature sont des enjeux qui ont traversé l’histoire des mathématiques ;
la fascination exercée par ce nombre l’a même fait entrer dans la culture populaire.
Parmi les schémas d’approximation numérique de PI on distingue le schéma suivant basé sur le développement
en faction continue dont la structure est régulière :
Travail à faire
Ecrire un programme qui :
1. calcule une valeur approchée de Pi selon le schéma ci-dessus pour une précision <10-15
2. calcule la valeur de n pour laquelle la précision de calcul est acquise
3. affiche Pi et n
Exercice 2-11 – Manipulation de textes
On considère un tableau T de caractère de capacité maximale de 3500 caractères.
Ecrire un programme qui permet de :
1. saisir le texte de T,
2. saisir le mot m,
3. compter le nombre de fois qu’un mot m est contenu dans T
III. Les tableaux – Manipulation des Vecteurs et matrices
Exercice 3-1 – Gestion d’une liste d’entiers – opérations de décalage
On considère un tableau T d’entiers de taille fixe NMAX. Le nombre d’entiers effectifs contenu dans le tableau T
est noté n avec 0≤ n≤NMAX. Le schéma suivant donne une représentation de ce tableau :
5. Professeur M.Qbadou Page 5/7
0 I n-1 n … Nmax-1
Zone libre
Ecrire un programme qui manipuler le tableau T par les opérations suivantes :
1. Saisir : qui saisit au clavier n entiers et les place dans le tableau.
2. DecalerADroite : qui décale les éléments du tableau T d’un cran vers la droite. Autrement suite à cette
opération le premier élément sera à la deuxième position, le deuxième à la troisième et ainsi de suite. Le
dernier prendra la première position.
3. DecalerAGauche : qui décale les éléments du tableau T d’un cran vers la gauche. Autrement suite à cette
opération le premier élément sera à la dernière position, le deuxième à la première et ainsi de suite.
4. SupprimerUneOccurrence : qui supprime la première occurrence d’une valeur x trouvée dans T
5. SupprimerOccurrences : fonction qui supprime toutes les occurrences trouvées dans T d’une valeur x
communiquer en paramètre.
6. Afficher : Fonction qui affiche à l’écran les données du tableau T.
Exercice 3-2 – Gestion d’une liste – opérations ensemblistes
On souhaite manipuler des listes d’entiers par les fonctions et procédures suivantes :
Fonction qui recherche et retourne la position du 1er minimum d’une liste
Fonction qui compte le nombre de fois qu’une valeur est répétée dans une liste
Fonction qui calcule l’union de deux listes
Fonction qui calcule l’intersection de deux listes
Fonction qui calcule la différence de deux listes
Fonction qui affiche une liste
Fonction qui saisit une liste
Pour permettre la manipulation de liste de tailles différentes, on adopte le modèle de liste suivant :
0 I n-1 n … Nmax-1
Zone libre
Où Nmax est une taille fixe suffisante et identique pour toutes les listes. n est une taille variable
désignant le nombre d’éléments d’une liste (0≤n≤Nmax)
Initialisation
Menu des fonctions
Lecture du choix
Choix ?
Fonction 1 Fonction 2 Fonction n
Fin
Début
…
6. Professeur M.Qbadou Page 6/7
Ecrire un programme qui implémente et teste les différentes fonctions sur deux listes l1 et l2 selon
le schéma ci-dessus.
Exercice 3-3 - Gestion d’une liste de réels – tri et calculs statistiques
On considère une liste de valeurs réelles strictement positives, notée T. Cette liste peut contenir un maximum
de 1000 valeurs. Le nombre effectif de valeurs contenues dans T est noté N. Il s'agit d'un tableau statique dont
la structure mémoire peut être schématisée comme suit :
0 N-1 999
… …
On souhaite manipuler la liste T par les opérations suivantes :
L’initialisation de la liste à l’état vide c’est dire à l’état où T ne contient aucune valeur (N=0)
L’ajout d’une valeur X à la liste T,
L’affichage de T,
Le tri par ordre décroissant de T,
L’affichage par ordre croissant des m valeurs les plus petites de T, où m ≤N
Le calcul de la moyenne de T,
Le calcul de l’écart type de la liste T noté e et donné par :
Où m est la moyenne de T
L’affichage par ordre décroissant de toutes les valeurs de T inférieures à la moyenne de T.
1. Donner toutes les déclarations nécessaires pour créer la liste T
2. Donner le code des différentes fonctions décrites ci-dessus
3. Ecrire un programme de test qui permet de tester toutes les fonctions dans l’ordre suivant :
a. Initialiser T
b. Ajouter 10 valeurs à T
c. Afficher T
d. Trier et afficher T
e. Afficher en ordre décroissant toutes les valeurs de T inférieures à la moyenne de T
f. Afficher en ordre croissant toutes les valeurs de T supérieures à la moyenne de T
Exercice3-4 : Ecart minimal dans une liste de nombre
Soit T un tableau de n nombres. On souhaite localiser les deux éléments distincts ayant les valeurs les plus
proches. Autrement dont la différence en valeur absolue de leurs valeurs est la plus petite.
Exemple :
0 1 2 3 4 5 6 7 8 9
100 30 100 17 11 12 7 18 200 25
Pour cet exemple on cherche à produire les résultats suivants :
Ecart : 1
Positions des nombres : 3 , 7
1. Ecrire dans le cas d’un tableau non trié, un programme optimal qui recherche les deux éléments les plus
proches dans T. Le programme doit retourner les positions de ces deux éléments ainsi que leur écart.
T[i
]
7. Professeur M.Qbadou Page 7/7
2. Donner l’ordre de grandeur de la complexité temporelle de votre solution
3. On considère une méthode de tri nommée Tri_Rapide capable de trier un tableau T de n éléments en un
temps de l’ordre de n*log2n. Donner un deuxième programme qui forcement commence par l’appelle à la
méthode Tri_Rapide pour trier le tableau T avant de commencer la recherche des deux éléments les plus
proches.
Exercice 3-5 – Manipulation de matrices carrées
On souhaite écrire un programme qui réalise certaines fonctions de manipulation de matrices carrées de réelles
de taille fixe NxN (matrice statiques). N est une constante fixée à 10. Parmi ces fonctions on souhaite réaliser les
suivantes :
Fct_Som : Calcule la somme de deux matrices
Fct_Prod : calcule le produit de deux matrices
Fct_Trace : retourne la trace d’une matrice
Fct_Saisir : permet la saisie des éléments d’une matrice
Fct_Afficher : permet l’affichage d’une matrice
1. Donner le code de ces fonctions.
2. Ecrire un programme qui :
Déclare les matrices X, Y Z1 et Z2 de taille 10x10
Saisie les matrices X et Y
Calcule et affiche la somme de X et Y dans Z1
Calcule et affiche le produit de X et Y dans Z2
Calcule et affiche les traces de X et Y