Exercices Algorithme

Exercice 2 Les Enregistrements Corrigé

Un nombre complexe Z est entièrement défini par ses parties réelle a et imaginaire b ( Z = a + bi ).

  1. Donner la déclaration d’un nombre complexe,
  2. Ecrire les fonctions : ReelZ, ImagZ et Module donnant les attributs d'un nombre complexe respectivement : la partie réelle, la partie imaginaire et le module),
  3. Ecrire les actions paramétrées : SommeZ, DiffZ et ProdZ nécessaires à l'arithmétique sur les complexes, respectivement pour l’addition, la soustraction et la multiplication,
  4. Ecrire une procédure ConjZ qui calcule le conjugué d’un nombre complexe.
  5. Ecrire une fonction EgaleZ qui teste l'égalité de deux nombres complexes.
  6. Ecrire une procédure EcrireZ qui permet d’afficher un nombre complexe.

Soit TC un tableau de N nombres complexes (N<=100). En utilisant les actions paramétrés précédentes, écrire un algorithme qui :

    • Affiche l’élément de TC ayant le plus grand module. Puis vérifie l’existence de son conjugué dans TC.
    • Calcule la somme Zs et le produit Zp des éléments non nuls du tableau TC.
    • Calcule et affiche la différence entre Zs et Zp si elle est imaginaire pur.
1-	Type Tcomplexe=Enregistrement a,b :reel ; Fin ;
2-	Fonction ReelZ(Z :Tcomplexe) :reel ;
Debut ReelZ←Z.a ; Fin ;

Fonction ImagZ(Z :Tcomplexe) :reel ;
Debut ImagZ←Z.b ; Fin ;

Fonction ModuleZ(Z :Tcomplexe) :reel ;
Debut ModuleZ←Racine(Z.a*Z.a+Z.b*Z.b) ; Fin ;


3-	Procedure SommeZ(E/ Z1,Z2 :Tcomplexe ; S/ Z :Tcomplexe) ;
Debut
Z.a←Z1.a+Z2.a ; Z.b←Z1.b+Z2.b ;
Fin ;

Procedure DiffZ(E/ Z1,Z2 :Tcomplexe ; S/ Z :Tcomplexe) ;
Debut
Z.a←Z1.a-Z2.a ; Z.b←Z1.b-Z2.b ;
Fin ;

Procedure ProdZ(E/ Z1,Z2 :Tcomplexe ; S/ Z :Tcomplexe) ;
Debut
Z.a←Z1.a*Z2.a- Z1.b*Z2.b ; Z.b← Z1.a*Z2.b+ Z1.b*Z2.a ;
Fin ;

4-	Procedure ConjZ(E/ Z :Tcomplexe ; S/ ZC :Tcomplexe) ;
 

Debut
ZC.a←Z.a ; ZC.b← -Z.b;
Fin ;

5-	Fonction EgaleZ (Z1,Z2 :Tcomplexe) :Booleen ;
Debut
Si Z1.a=Z2.a et Z1.b=Z2.b Alors EgaleZ← Vrai Sinon EgaleZ← Faux Fsi ;
Fin ;

6-	Procédure EcrireZ (Z:Tcomplexe) ;
Debut
Si Z.b=0 AlorsEcrire(Z.a)
Sinon Si Z.a=0	Alors Ecrire(Z.b,’ i’)
Sinon Si Z.b>0 Alors Ecrire(Z.a,’+’,Z.b,’ i’)
Sinon Ecrire(Z.a,Z.b,’ i’)
 
Fsi ;

 
Fsi ;

 
Fsi ;
Fin;

7-
Algorithme Complexe ;
Type Tcomplexe=Enregistrement a,b :reel ; Fin ;
Const Z0.a=0 ; Z0.b=0 ; /*decalation d’une constante complexe nulle ;
Var TC :Tableau[1..100] de Tcomplexe ; I,N :entier ;
Z,Zs,Zp,Zm :Tcomplexe ; M,Max :reel ;
Trouve :booleen ;
/*declaration des différentes APs
-	-  -  -
 
Debut
 
Ecrire(‘Donner N’) ;
Repeter Lire(N) ; Jusqu’à N>0 et N≤100 ;
/*lecture du tableau des complexes
Pour I←1 à N
Faire Lire(TC[I].a, TC[I].b) ;
/* on peut faire aussi
Avec T[I] Faire Lire(a,b) Fait ;
/*ou encore utiliser une variable intermédiaire de type Tcomplexe
Lire(Z.a,Z.b) ;
T[I]←Z;
 
Fait ;
/*Recherche du nombre ayant le plus grand module
Zm←TC[1] ;
Max←ModuleZ(Zm) ;

Pour I←2 à N
Faire
M← ModuleZ(TC[I]) ;
Si M>Max Alors	Zm← TC[I] ;
Max←M
Fsi ;
Fait ;
Ecrire(‘Le nombre complexe ayant le plus grand module est :’,EcrireZ(Zm)) ;
/* Recherche du conjugué de Zm dans TC
Trouve←Faux ; I←1 ; Tantque I≤N et Non Trouve Faire

Fait ;
 
Trouve← EgaleZ(TC[I],ConjZ(Zm)) ; I←I+1 ;
 
Si Trouve Alors Ecrire(‘Len conjugué existe’ Sinon Ecrire(‘le conjugué n’’existe pas’) Fsi ;
/*calcule de la somme et du produit, on initialise Zs à Z0 et Zp à 1
Zs←Z0 ; Zp.a←1 ; Zp.b←0 ;
Pour I←1 à N
Faire
Si Non EgaleZ(TC[I],Z0)
Alors
SommeZ(Zs,TC[I],Zs) ;
ProdZ(Zp,TC[I],Zp)
Fsi; Fait ;
DiffZ(Zs,Zp,Z) ;
Si ReelZ(Z)=0 et ImagZ(Z)≠0 Alors EcrireZ(Z) Fsi ;
 
Fin.

Pour I←2 à N
Faire
M← ModuleZ(TC[I]) ;
Si M>Max Alors	Zm← TC[I] ;
Max←M
Fsi ;
Fait ;
Ecrire(‘Le nombre complexe ayant le plus grand module est :’,EcrireZ(Zm)) ;
/* Recherche du conjugué de Zm dans TC
Trouve←Faux ; I←1 ; Tantque I≤N et Non Trouve Faire
 

Fait ;
 
Trouve← EgaleZ(TC[I],ConjZ(Zm)) ; I←I+1 ;

Fin.
 
Si Trouve Alors Ecrire(‘Len conjugué existe’ Sinon Ecrire(‘le conjugué n’’existe pas’) Fsi ;
/*calcule de la somme et du produit, on initialise Zs à Z0 et Zp à 1
Zs←Z0 ; Zp.a←1 ; Zp.b←0 ;
Pour I←1 à N
Faire
Si Non EgaleZ(TC[I],Z0)
Alors
SommeZ(Zs,TC[I],Zs) ;
ProdZ(Zp,TC[I],Zp)
Fsi; Fait ;
DiffZ(Zs,Zp,Z) ;
Si ReelZ(Z)=0 et ImagZ(Z)≠0 Alors EcrireZ(Z) Fsi ;

 

Ajouter un commentaire

Veuillez vous connecter pour ajouter un commentaire.

Pas encore de commentaires.