Vous êtes sur la page 1sur 4

Faculté des Sciences de Monastir Classes: LSI-1

Cycle Prà paratoire


c Durée : 4 h 30

Atelier de Programmation 2

TP 1 : Les structures en langage C

Dans ce TP, nous désirons implémenter un nouveau type complexe t pour représen-
ter l’ensemble C. Dans cette implémentation, nous définissons un ensemble d’opérations
arithmétiques pour manipuler les nombres complexes. Enfin, nous implémentons une ré-
solution d’une équation de second degré dans tous les cas (dans l’ensemble R ou dans
l’ensemble C).

Partie 1 : Définition/Saisie/Affichage type complexe

 
1 #i f n d e f COMPLEXE H
2 #define COMPLEXE H
3
4 typedef struct complexe
5 {
6 f l o a t R ee l ;
7 float Imaginaire ;
8 } complexe t ;
9
10 c o m p l e x e t S a i s i e C o m p l e x e ( ) ;
11 void A f f i c h e C o m p l e x e ( c o m p l e x e t C) ;
12
13 #endif
 
Fichier d’entête complexe.h

1. (• ◦ ◦◦) Dans un répertoire à votre nom, créer un nouveau fichier ”complexe.h”.


Dans ce fichier, définir le type complexe t qui correspond à une structure avec
deux champs et deux fonctions Saisie Complexe et Affiche Complexe tel-que
décrit dans le listing complexe ci-dessus.
2. (• ◦ ◦◦) Dans un nouveau fichier ”complexe.c”, écrire le code de la fonction
Saisie Complexe qui saisit la partie réelle et la partie imaginaire d’une variable
de type complexe t et renvoie le nombre complexe en question comme type de
retour.
3. (••◦◦)Dans le fichier ”complexe.c”, écrire le code de la fonctionAffiche Complexe
qui permet d’afficher une variable complexe donné en paramètre sous le format ”x
+ y i” avec x la partie réelle et y la partie imaginaire. Il faut traiter tous les cas
possibles selon les valeurs de x et y. Les cas possibles sont les suivants : (x , i , - i,
y i , x + i , x - i , x + y i , x - y i ).
4. (• ◦ ◦◦) Dans un nouveau fichier ”main.c”, écrire un programme principal qui permet
de lire deux variables complexe et de les afficher à nouveau. n’oublier pas de tester
tous les cas possible.
B.Guizani - S.Chayeb / 17 Février 2020. Page n◦ 1.
Partie 2 : Opérations arithmétiques sur complexe

 
1 c o m p l e x e t Add Complexe ( c o m p l e x e t C1 , c o m p l e x e t C2) ;
2 c o m p l e x e t Mult Complexe ( c o m p l e x e t C1 , c o m p l e x e t C2) ;
3 c o m p l e x e t M u l t s c a l C o m p l e x e ( f l o a t K, c o m p l e x e t C) ;
4 f l o a t Module Complexe ( c o m p l e x e t c ) ;
 
Partie 2 de complexe.h

1. (•◦◦◦) Dans le fichier d’entête complexe.h, ajouter la définition des quatre fonctions
précédentes.
2. Dans le fichier source complexe.c, implémenter les quatre fonction suivantes :
2.1. (•◦◦◦) La fonction Add Complexe permet de renvoyer un nombre complexe qui
correspond à la somme de deux nombres complexes c1 et c2 donnés en paramètre.
2.2. (• ◦ ◦◦) La fonction Mult scal Complexe permet de renvoyer le résultat de la
multiplication d’un complexe par un scalaire (float). Cette fonction prend comme
paramètre un nombre scalaire (float) et nombre complexe.
2.3. (• • ◦◦) La fonction Module Complexe permet de calculer le module (kzk)
d’un complexe donné en paramètre et de renvoyer le résultat.
2.4. (• • •◦) La fonction Mult Complexe permet de renvoyer un nombre complexe
correspondant à la multiplication de deux nombres complexes donnésen para-
mètres.
3. (• • ◦◦) Écrire un programme principal qui permet de :
3.1. Saisir deux nombres complexes et un nombre réel.
3.2. Calculer et afficher la somme des deux complexes saisies.
3.3. Calculer et afficher le produit d’un nombre complexe et le réel saisie.
3.4. Calculer et afficher les modules des deux complexes saisies.
3.5. Calculer et afficher le produit des deux complexes saisies.
Exemple de sortie du programme principal
————————————————–
Calcul et affichage de la somme :
————————————————–
2.00 -3.00 i -9.00 + 2.00 i = -7.00 - i
————————————————–
Calcul et affichage du produit :
————————————————–
2.00 -3.00 i * -9.00 + 2.00 i = -12.00 + 31.00 i
————————————————–

B.Guizani - S.Chayeb / 17 Février 2020. Page n◦ 2.


Partie 3 : Opérations arithmétiques sur complexe

Dans cette partie nous désirons implémenter des fonctions permettant la résolution
d’une équation de second degré avec deux fichiers ”equation2d.h” et ”equation2d.c”. Le
fichier ”equation2d.h” contient les déclarations du type equation2d t représentant une
equation de second degré ainsi que les fonctions relatif au procédé de résolution.

 
1 #i f n d e f EQUATION2D H
2 #define EQUATION2D H
3 #include ”complexe . h ”
4
5 // Definition de type equation2d_t
6 typedef struct e q u a t i o n 2 d t
7 {
8 float a , b , c ;
9 } equation2d t ;
10
11 equation2d t Saisie Equation () ;
12 void A f f i c h e E q u a t i o n ( e q u a t i o n 2 d t E) ;
13 f l o a t C a l c u l D e l t a ( e q u a t i o n 2 d t E) ;
14 f l o a t S o l u t i o n U ( e q u a t i o n 2 d t E) ;
15 f l o a t S o l u t i o n 1 R ( e q u a t i o n 2 d t E) ;
16 f l o a t S o l u t i o n 2 R ( e q u a t i o n 2 d t E) ;
17 c o m p l e x e t S o l u t i o n 1 C ( e q u a t i o n 2 d t E) ;
18 c o m p l e x e t S o l u t i o n 2 C ( e q u a t i o n 2 d t E) ;
19 void Resoudre ( e q u a t i o n 2 d t E) ;
20
21 #endif
 
Fichier d’entête equation2d.h

Rappelons la procédure de d’une équation de second degré de la forme ax2 +bx+c = 0 :


1. Calculer ∆ = b2 − 4ac
2. Si ∆ = 0 : l’équation admet une solution unique dans R (X = −b 2a
).
√ √
−b− ∆ −b+ ∆
3. Si ∆ > 0 : l’équation admet deux solutions dans R (X1 = 2a
et X2 = 2a
)
√ √
−b−i −∆ −b+i −∆
4. Si ∆ < 0 : l’équation admet deux solutions dans C (Z1 = 2a
et Z2 = 2a
)

1. (• ◦ ◦) Créer et écrire le contenue du fichier ”equation2d.h”.


2. Créer le fichier ”equation2d.c” et rédiger le code source des fonctions suivantes :
2.1. (•◦◦◦) La fonction Saisie Equation permet de saisir les trois coefficients d’une
équation du second degré et renvoyer l’équation en retour. La valeur du coefficient
a doit être non null.
2.2. (•◦◦◦) La fonction Affiche Equation permet d’afficher une équation du second
degré donnée en paramètre sous la forme : ax2 + bx + c = 0. Tester les différentes
valeurs des coefficients b et c.
B.Guizani - S.Chayeb / 17 Février 2020. Page n◦ 3.
2.3. (• • ◦◦) La fonction Calcul Delta calcule et renvoie le ∆ d’une équation du
second degré donnée en paramètre.
2.4. (• • ◦◦) la fonction Solution U renvoie l’unique solution (X) dans R d’une
équation donnée en paramètre (cas ∆ = 0).
2.5. (• • ◦◦) La fonction Solution1 R renvoie la première solution(X1 ) dans R d’une
équation donnée en paramètre.
2.6. (• • ◦◦) La fonction Solution2 R renvoie la deuxième solution (X2 ) dans R
d’une équation donnée en paramètre.
2.7. (••◦◦) La fonction Solution1 C renvoie la première solution (Z1 ) dans C d’une
équation donnée en paramètre.
2.8. (••◦◦) La fonction Solution2 C renvoie la deuxième solution (Z2 ) dans C d’une
équation donnée en paramètre.
2.9. (•••◦) La fonction Resoudre permet de résoudre une équation du second degré.
Elle calcule ∆ et selon sa valeur affiche les solutions de l’équation dans R ou dans
C.
3. Écrire le programme principal qui permet de saisir une équation du second degré et
de la résoudre.
 
1 #include <s t d i o . h>
2 #include ”complexe . h ”
3 #include ”e q u a t i o n 2 d . h ”
4 int main ( )
5 {
6 equation2d t E;
7 E=S a i s i e E q u a t i o n ( ) ;
8 p r i n t f ( ” R e s o l u t i o n de l ’ e q u a t i o n ”) ;
9 A f f i c h e E q u a t i o n (E) ;
10 p r i n t f ( ” : \n ”) ;
11 Resoudre (E) ;
12 return 0 ;
13 }
 
Fichier d’entête equation2d.h

4. Tester la résolution des trois équations suivantes :


4.1. 2x2 − 4x + 2 = 0
4.2. −x2 + 2x − 3 = 0
4.3. 2x2 − 3x = 0

B.Guizani - S.Chayeb / 17 Février 2020. Page n◦ 4.

Vous aimerez peut-être aussi