Haskell : Nombre Complexe

Exercices Corriges en Haskell : Nombre Complexe

On désire manipuler des nombres complexes en Haskell

1- Proposer un type NombreComplexe de donnée à cet effet

2- Donner deux exemples de nombres complexes de votre type

3- Que faut-il faire pour pouvoir comparer deux nombres complexes grâce aux opérateurs == et /= ?

4- Proposer une instance de la classe Show pour l’affichage d’un nombre complexe

5- Proposer une instance de la classe Ord pour définir une relation d’ordre entre les éléments de type NombreComplexe

Correction :

1)

data NombreComplexe = Complexe {reel :: Double, imaginaire :: Double} deriving (Eq)

2)

Complexe 3.2 5.1
Complexe (-2.0) 1.5

3)

Pour pouvoir comparer deux nombres complexes avec les opérateurs == et /=, il faut ajouter la clause deriving (Eq) à la déclaration de type, comme cela a été fait dans la proposition de type ci-dessus. Cela permet de dériver une instance de la classe Eq qui fournit une implémentation par défaut des opérateurs == et /=.

4)

instance de la classe Show pour afficher un nombre complexe :

instance Show NombreComplexe where
  show (Complexe a b)
    | b >= 0    = show a ++ " + " ++ show b ++ "i"
    | otherwise = show a ++ " - " ++ show (abs b) ++ "i"

Cette instance de Show affiche un nombre complexe sous la forme a + bi ou a - bi en fonction du signe de sa partie imaginaire.

5)

instance de la classe Ord pour définir une relation d'ordre entre les nombres complexes :

instance Ord NombreComplexe where
  compare (Complexe a b) (Complexe c d)
    | a /= c    = compare a c
    | otherwise = compare b d

Cette instance de Ord compare les nombres complexes en premier lieu sur leur partie réelle, puis sur leur partie imaginaire si les parties réelles sont égales.

Si vous avez trouvé les exercices corrigés en Haskell de JoëlYk intéressants et utiles, pourquoi ne pas les partager avec d'autres personnes qui pourraient également en bénéficier ? Partagez ce lien sur les réseaux sociaux ou envoyez-le à vos amis et collègues. Vous pourriez aider quelqu'un à améliorer ses compétences en programmation ou à trouver des solutions à des problèmes complexes. N'oubliez pas que la connaissance doit être partagée pour grandir. Merci pour votre soutien et votre partage !

Contact WhatsApp : +237 658395978 | Réaliser Par Joël_Yk

  • Aucune note. Soyez le premier à attribuer une note !

Ajouter un commentaire

Anti-spam