TP_Langage_C _all
TP_Langage_C _all
TP_Langage_C _all
Sections : A, C et D
Langage C
Travaux Pratiques
TP 1 : Notions de base
Le calcul des racines d'une équation du second degré du type ax2+bx+c=0 se fait en calculant
d'abord son discriminant Δ = b2-4ac :
1- Ecrire un programme permettant de calculer Δ et d'afficher sa valeur à l'écran pour des
valeurs fixées de a, b et c.
2- Compléter le programme précédent de manière à pouvoir rentrer les valeurs de a, b et c au
clavier.
−b +
3- Calculer et afficher les solutions de l'équation dans le cas où Δ>0 : x1 = et
2a
−b −
x2 = .
2a
−b
4- Traiter le cas Δ = 0 (une racine double x = )
2a
−b −
5- Considérer Δ < 0 (deux racines complexes conjuguées : ( x1 = +i et
2a 2a
−b −
x2 = −i ), pour les racines complexes on affichera les parties réelles et imaginaires
2a 2a
comme suit :
x1= 3.5 + i4.2 et x2= 2 – i6.77
u0 = 0 et u1 = 1
un = un-1 + un-2 pour n >= 2
1- En utilisant une boucle, écrivez un programme qui calcule itérativement le nème terme de la
suite de Fibonacci. La valeur de n doit être demandée à l’utilisateur. À chaque itération, le
programme doit afficher un. Voici un exemple d’affichage :
Entrez la valeur de n : 6
u0=0
u1=1
u2=1
u3=2
u4=3
u5=5
u6=8
Page 2 sur 10
Travaux pratiques Tronc Commun
Langage C Année : 2024 - 2025
2- On peut montrer que la suite (un), n ∈ N vérifie un ~ ϕn où ϕ est le nombre d’or. Ainsi,
u
lim n → + n = . Faites une copie de votre programme et modifiez-la pour tester cette
u n −1
propriété (utilisez le type double). A chaque itération, le programme doit afficher un
u
et le rapport n .
u n −1
1+ 5
Remarque : = 1, 6180339887498948482045868343656
2
3- Faites une copie de votre programme et modifiez-la pour déterminer quel est le rang n
à partir duquel ϕ est estimé avec une précision de 10-10. A chaque itération, le
u
programme doit afficher un, n et l’erreur commise comme suit :
u n −1
u0=0
u1=1
u2=1
u2/u1=1.000000000000000
erreur : -0.618033988740000
u3=2
u3/u2=2.000000000000000
erreur : 0.381966011260000
u4=3
u4/u3=1.500000000000000
erreur : -0.118033988740000
u5=5
u5/u4=1.666666666666667
erreur : 0.048632677926667
u6=8
u6/u5=1.600000000000000
erreur : -0.018033988740000
On veut programmer un jeu simple, dont les règles sont les suivantes :
• D’abord, le programme choisit un nombre entier entre 1 et 100 au hasard ;
• Puis, il demande à l’utilisateur de deviner cette valeur.
• Si l’utilisateur a bien deviné, le jeu s’arrête.
Page 3 sur 10
Travaux pratiques Tronc Commun
Langage C Année : 2024 - 2025
• Sinon, le programme indique à l’utilisateur si la valeur proposée est trop grande ou trop
petite. Puis, l’utilisateur doit proposer une nouvelle valeur, et on recommence ainsi
jusqu’à ce que la valeur du programme soit trouvée.
Le nombre de tentatives n’est pas limité : le jeu s’arrête quand l’utilisateur a deviné la valeur
choisie par le programme. Le score de l’utilisateur correspond au nombre de tentatives. Bien
sûr, le but du jeu est de trouver la valeur en un minimum de tentatives.
Aide : Pour générer un nombre aléatoire, on utilisera la fonction rand(). Cette fonction
génère un nombre au hasard. Mais nous, on veut que ce nombre soit compris entre 1 et 100. On
utilisera la formule suivante :
srand(time(NULL));
x = (rand() % (MAX - MIN + 1)) + MIN;
srand permet d'initialiser le générateur de nombres aléatoires, on l'appelle une seule fois au
début du programme. N'oublier pas d'inclure les bibliothèques stdlib.h, stdio.h et
time.h.
1
On considère l’intégrale 𝐼 = ∫0 x ∗ sin(𝑥) 𝑑𝑥
𝑛
ℎ
𝐼(𝑓)𝑅 = ℎ ∑ 𝑓 (𝑎 − + 𝑘 ∗ ℎ)
2
𝑘=1
Page 4 sur 10
Travaux pratiques Tronc Commun
Langage C Année : 2024 - 2025
3- La méthode des trapèzes ressemble fortement à la méthode des rectangles, mais au lieu
de sommer les aires des rectangles, on somme les surfaces des trapèzes.
Ecrire un algorithme qui évalue numériquement l’intégrale I par la méthode des trapèzes
en utilisant la formule suivante :
𝑛−1
ℎ
𝐼(𝑓) 𝑇 = [𝑓(𝑎) + 𝑓(𝑏) + 2 ∑ 𝑓(𝑎 + 𝑘 ∗ ℎ)]
2
𝑘=1
4- La méthode de Simpson est également une technique de calcul numérique d’une
intégrale. Cette méthode utilise l'approximation d'ordre 2 de f par un polynôme
quadratique.
Ecrire un algorithme qui évalue numériquement l’intégrale I par la méthode de Simpson
en utilisant la formule suivante :
𝑛−1 𝑛−1
ℎ 𝑥𝑘 + 𝑥𝑘+1
𝐼(𝑓)𝑆 = [𝑓(𝑎) + 𝑓(𝑏) + 2 ∑ 𝑓(𝑥𝑘 ) + 4 ∑ 𝑓( )]
6 2
𝑘=1 𝑘=0
Avec : 𝑥𝑘 = 𝑎 + 𝑘 ∗ ℎ
5- Modifier le nombre n des sous intervalles pour toutes les méthodes. Quel est son
influence ?
6- Afficher l’erreur relative de chaque méthode.
L’erreur relative est définie par :
𝐼𝐸𝑥𝑎𝑐𝑡𝑒 − 𝐼𝐸𝑠𝑡𝑖𝑚é𝑒
𝐸𝑟𝑟𝑒𝑢𝑟 = | |
𝐼𝐸𝑥𝑎𝑐𝑡𝑒
7- Comparer les résultats du calcul exact et ceux des trois méthodes. Quelle est la plus
précise ?
Page 5 sur 10
Travaux pratiques Tronc Commun
Langage C Année : 2024 - 2025
TP 2 : Les tableaux
On souhaite simuler des lancements de dés et analyser les statistiques des résultats obtenus.
Ecrire un code en langage C qui affiche le nombre d’apparition de chaque élément d’un tableau
T de taille N. Voici un exemple :
T: 5 9 5 7 7 9 6 -4 9 9
Le code doit afficher le résultat suivant :
5 apparaît 2 fois
9 apparaît 4 fois
7 apparaît 2 fois
6 apparaît 1 fois
-4 apparaît 1 fois
Page 6 sur 10
Travaux pratiques Tronc Commun
Langage C Année : 2024 - 2025
Ecrire un code en langage C qui supprime les nombres pairs d’un tableau T de n entiers.
Ecrire un code en langage C qui permet d’insérer un élément dans un tableau T de n entiers trié.
Page 7 sur 10
Travaux pratiques Tronc Commun
Langage C Année : 2024 - 2025
Ecrire un programme qui lit un verbe régulier en "er" au clavier et qui en affiche la conjugaison
au présent de l'indicatif de ce verbe. Contrôlez d'abord, s'il s'agit bien d'un verbe en "er" avant
de conjuguer.
Exemple :
Verbe : fêter
je fête
tu fêtes
il fête
nous fêtons
vous fêtez
ils fêtent
Le but de cet exercice est de réaliser le jeu du pendu. C'est un jeu de lettres dans lequel il faut
deviner un mot caché lettre par lettre en moins de N essais.
Partie 1
1- Ecrire un programme qui demande à l'utilisateur un mot de longueur maximum 30 et qui
transforme les caractères de ce mot en majuscule (pour éviter les accents). Ce sera le mot
caché.
Afin de présenter le mot caché à un autre utilisateur de manière masquée, créez un deuxième
mot de même longueur que le mot caché formé par des '*'. C'est le mot qui sera affiché au
joueur. Le joueur devra, en N essais, trouver le mot caché en donnant à chaque fois une lettre.
2- Ecrire un programme qui vérifie si la lettre donnée se trouve dans le mot caché.
Il y a deux possibilités :
• Si la lettre se trouve dans le mot on dévoile le mot avec les lettres qu'on a déjà
trouvées. S'il n'y a plus de caractères inconnus on a gagné.
• Si la lettre ne se trouve pas dans le mot on indique que la lettre ne s'y trouve pas.
Dans tous les cas on diminue le nombre d'essais restants et on redemande une autre lettre. Quand
le nombre d'essais devient nul le jeu est terminé et on a perdu.
3- Terminer le programme avec ces consignes.
Page 8 sur 10
Travaux pratiques Tronc Commun
Langage C Année : 2024 - 2025
Partie 2
Mettez les différents blocs de la patrie 1 sous formes de fonctions :
Nous considérons un programme qui permute aléatoirement les lettres intérieures de chaque
mot d’une phrase. Pour cela on demandera à l’utilisateur de nous donner une phrase d’une
douzaine de mots, puis nous rangerons les mots de la phrase dans un tableau de chaînes de
caractères.
1- Ecrire un programme qui permet de détecter les mots qui existent dans une phrase et tester
cette partie du programme avec la phrase exemple : "Nous sommes les etudiants du
tronc commun ENSMR".
Pour chaque mot dont la longueur dépasse 3 caractères, on permute 3 fois, de manière aléatoire
les lettres intérieures (On ne touche pas aux extrémités). Nous aurons donc besoin, à chaque
fois, de générer 2 nombres aléatoires différents compris entre 1 et la longueur du mot moins 2
pour effectuer la permutation des caractères intérieurs du mot.
2- Ecrire et tester cette partie du programme avec un seul mot. On affichera le mot avant et
après modification. Généraliser et compléter le programme pour afficher la phrase avec les
mots modifiés. Pour la phrase exemple, vous devrez obtenir quelque chose comme :
"Nous smmeos les etuniadts du tnorc cmoumn EMSNR"
Page 9 sur 10
Travaux pratiques Tronc Commun
Langage C Année : 2024 - 2025
TP 4 : Structures et pointeurs
Le but de ce TP est de créer une base de données simple, permettant de décrire une promotion
d’étudiants. Pour cela, nous allons utiliser des structures, des fonctions et des pointeurs.
Page 10 sur 10