Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

COMPLEXES


Information sur la source

Description

Cliquez pour voir la capture en taille normale
C'est une structure pouvant manipuler les bases des complexes (operations de base, module, argument, etc..) pour pouvoir jouer avec les complexes dans n'importe quelle application !

La structure que j'ai ecrite nommé Complexe comporte :

* 1 constructeur pour créer de nouveau complexe :

// Création du complexe 3-i5
Complexe monComplexe = new Complexe(3,-5);

* 2 accesseurs en get/set pour pouvoir recuperer ou modifier les parties Reelles et Imaginaires du complexe

// Recuperation de la partie Reele dans a :
double a = monComplexe.Reel;
// Modification de la partie Imaginaire à -8 :
monComplexe.Imaginaire = -8;

* 4 accesseurs en lecture seule (get seulement) pour récupérer le Conjugué, le module, l'argument et le carré d'un complexe :

// Conjugué (retourne un nouveau Complexe)  :
Complexe le_conjugue = monComplexe.Conjugue;
// Module (retourne un double) :
double module = monComplexe.Module;
// Argument (retourne un double) :
double argument = monComplexe.Argument;
// Carré du complexe (retourne un nouveau Complexe) :
Complexe au_carre = monComplexe.Carre;

* 1 méthode : Rotation qui retourne un nouveau complexe de la rotation du complexe par un angle (en double) et d'un centre (Complexe)

// Rotation de monComplexe d'angle 3.0 par le centre 2+i4
Complexe nouveau_point = monComplexe.Rotation(3.0,new Complexe(2,4));

* 4 surcharges d'operateurs pour les operations +, -, *, / respectivement addition, soustration, multiplication, division :

Complexe cmp1, cmp2, resultat;
cmp1 = new Complexe(3,-6);
cmp2 = new Complexe(6,7);
// Addition de cmp1 par cmp2
resultat = cmp1 + cmp2;
// Soustraction de cmp1 par cmp2
resultat = cmp1 - cmp2;
// Multiplication de cmp1 par cmp2
resultat = cmp1 * cmp2;
// Division de cmp1 pr cmp2
resultat = cmp1 + cmp2;

* Et pour finir 1 surcharge de la methode ToString() afin de pouvoir recuperer le complexe en string sous la forme a+ib :

Complexe monComplexe = new Complexe(4,-5);
Console.WriteLine(monComplexe); // Affiche a l'ecran : 4-5i
 

Source

  • /*
  • Structure COMPLEXE
  • Gestion des nombres Complexes
  • Version 1.0 - Last Modif : 21/04/2006 15:52
  • Développé par SeBeuh < sebeuh [arobase] ajsinfo [point].net >
  • (c) 2006 - http://sebeuh.ajsinfo.net
  • */
  • using System;
  • using System.Collections.Generic;
  • using System.Text;
  • namespace Complexes
  • {
  • // Structure : Complexe
  • public struct Complexe
  • {
  • // Champs
  • private double _reel;
  • private double _imaginaire;
  • // Constructeur
  • public Complexe(double reel, double imaginaire)
  • {
  • this._reel = reel;
  • this._imaginaire = imaginaire;
  • }
  • // Surcharge de la methode ToString()
  • // renvoi du complexe sous la forme a+ib
  • public override string ToString()
  • {
  • string re = "", img = "";
  • if(this._reel != 0)
  • re = ((float)this._reel).ToString();
  • if (this._imaginaire > 0 && this._imaginaire != 1)
  • img = "+" + ((float)this._imaginaire).ToString() + "i";
  • else if (this._imaginaire == 1)
  • img = "+i";
  • else if (this._imaginaire < 0 && this._imaginaire != -1)
  • img = ((float)this._imaginaire).ToString() + "i";
  • else if (this._imaginaire == -1)
  • img = "-i";
  • return (re + img);
  • }
  • // Surcharge des operateurs
  • // Addition
  • public static Complexe operator +(Complexe c1, Complexe c2)
  • {
  • return (new Complexe((c1.Reel + c2.Reel), (c1.Imaginaire + c2.Imaginaire)));
  • }
  • // Soustraction
  • public static Complexe operator -(Complexe c1, Complexe c2)
  • {
  • return (new Complexe((c1.Reel - c2.Reel), (c1.Imaginaire - c2.Imaginaire)));
  • }
  • // Multiplication
  • public static Complexe operator *(Complexe c1, Complexe c2)
  • {
  • return (new Complexe(((c1.Reel * c2.Reel) - (c1.Imaginaire * c2.Imaginaire)), ((c1.Reel * c2.Imaginaire) + (c2.Reel * c1.Imaginaire))));
  • }
  • // Division
  • public static Complexe operator /(Complexe c1, Complexe c2)
  • {
  • return (new Complexe(((c1._reel * c2._reel - c1._imaginaire * (-c2._imaginaire)) / (Math.Pow(c2._reel, 2) + Math.Pow(c2._imaginaire, 2))), ( ((c1._reel * (-c2._imaginaire) + c2._reel * c1._imaginaire) / (Math.Pow(c2._reel, 2) + Math.Pow(c2._imaginaire, 2))))));
  • }
  • // Methodes
  • // Rotation
  • public Complexe Rotation(double angle, Complexe centre)
  • {
  • return (((this - centre) * (new Complexe(Math.Cos(angle), Math.Sin(angle)))) + centre);
  • }
  • // Accesseurs en Get (read only)
  • // Conjugué du complexe
  • public Complexe Conjugue
  • {
  • get { return new Complexe(this._reel, (0 - this._imaginaire)); }
  • }
  • // Module du complexe
  • public double Module
  • {
  • get { return Math.Sqrt((Math.Pow(this._reel, 2) + Math.Pow(this._imaginaire, 2))); }
  • }
  • // Argument du complexe
  • public double Argument
  • {
  • get { return (Math.Atan((this._imaginaire / this._reel))); }
  • }
  • // Carré du complexe
  • public Complexe Carre
  • {
  • get { return new Complexe((Math.Pow(this._reel,2)-Math.Pow(this._imaginaire,2)),(2*this._reel*this._imaginaire)); }
  • }
  • // Accesseurs en Get&Set
  • // Partie Reel
  • public double Reel
  • {
  • get { return this._reel; }
  • set { this._reel = value; }
  • }
  • // Partie Imaginaire
  • public double Imaginaire
  • {
  • get { return this._imaginaire; }
  • set { this._imaginaire = value; }
  • }
  • }
  • }
/*

	Structure COMPLEXE
	Gestion des nombres Complexes
	Version 1.0 - Last Modif : 21/04/2006 15:52
	Développé par SeBeuh < sebeuh [arobase] ajsinfo [point].net >
	(c) 2006 - http://sebeuh.ajsinfo.net

*/
using System;
using System.Collections.Generic;
using System.Text;

namespace Complexes
{
    // Structure : Complexe
    public struct Complexe
    {
        // Champs
        private double _reel;
        private double _imaginaire;

        // Constructeur
        public Complexe(double reel, double imaginaire)
        {
            this._reel = reel;
            this._imaginaire = imaginaire;
        }

        // Surcharge de la methode ToString()
        //  renvoi du complexe sous la forme a+ib
        public override string ToString()
        {
            string re = "", img = "";
            if(this._reel != 0)
                re = ((float)this._reel).ToString();
            if (this._imaginaire > 0 && this._imaginaire != 1)
                img = "+" + ((float)this._imaginaire).ToString() + "i";
            else if (this._imaginaire == 1)
                img = "+i";
            else if (this._imaginaire < 0 && this._imaginaire != -1)
                img = ((float)this._imaginaire).ToString() + "i";
            else if (this._imaginaire == -1)
                img = "-i";
            return (re + img);
        }

        // Surcharge des operateurs
        //  Addition
        public static Complexe operator +(Complexe c1, Complexe c2)
        {
            return (new Complexe((c1.Reel + c2.Reel), (c1.Imaginaire + c2.Imaginaire)));
        }
        //  Soustraction
        public static Complexe operator -(Complexe c1, Complexe c2)
        {
            return (new Complexe((c1.Reel - c2.Reel), (c1.Imaginaire - c2.Imaginaire)));
        }
        //  Multiplication
        public static Complexe operator *(Complexe c1, Complexe c2)
        {
            return (new Complexe(((c1.Reel * c2.Reel) - (c1.Imaginaire * c2.Imaginaire)), ((c1.Reel * c2.Imaginaire) + (c2.Reel * c1.Imaginaire))));
        }
        //  Division
        public static Complexe operator /(Complexe c1, Complexe c2)
        {
            return (new Complexe(((c1._reel * c2._reel - c1._imaginaire * (-c2._imaginaire)) / (Math.Pow(c2._reel, 2) + Math.Pow(c2._imaginaire, 2))), ( ((c1._reel * (-c2._imaginaire) + c2._reel * c1._imaginaire) / (Math.Pow(c2._reel, 2) + Math.Pow(c2._imaginaire, 2))))));
        }

        // Methodes
        //  Rotation
        public Complexe Rotation(double angle, Complexe centre)
        {
            return (((this - centre) * (new Complexe(Math.Cos(angle), Math.Sin(angle)))) + centre);
        }

        // Accesseurs en Get (read only)
        //  Conjugué du complexe
        public Complexe Conjugue
        {
            get { return new Complexe(this._reel, (0 - this._imaginaire)); }
        }
        //  Module du complexe
        public double Module
        {
            get { return Math.Sqrt((Math.Pow(this._reel, 2) + Math.Pow(this._imaginaire, 2))); }
        }
        //  Argument du complexe
        public double Argument
        {
            get { return (Math.Atan((this._imaginaire / this._reel))); }
        }
        //  Carré du complexe
        public Complexe Carre
        {
            get { return new Complexe((Math.Pow(this._reel,2)-Math.Pow(this._imaginaire,2)),(2*this._reel*this._imaginaire)); }
        }

        // Accesseurs en Get&Set
        //  Partie Reel
        public double Reel
        {
            get { return this._reel; }
            set { this._reel = value; }
        }
        //  Partie Imaginaire
        public double Imaginaire
        {
            get { return this._imaginaire; }
            set { this._imaginaire = value; }
        }
    }
}

Conclusion

Bref il y a toutes les fonctions de bases sur les complexes pour pouvoir les utiliser très facilement dans vos développements :-)
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de econs le 09/06/2006 11:39:27 administrateur CS

Les complexes sont un sujet inépuisable d'utilisation et de familiarisation avec la programmation objet. C'est proprement codé. Bien joué.

signaler à un administrateur
Commentaire de kamalz le 09/06/2006 15:20:25

Trés bon code, c'est trés utile pour les applications math..le code est lisible, court et parfait..

signaler à un administrateur
Commentaire de SharpMao le 12/06/2006 15:39:29

Classique, mais bien réalisé.

Suggestion : surcharger les opérateurs +=, -+, *=, /=, == et !=.

signaler à un administrateur
Commentaire de LocalStone le 15/06/2006 00:42:12

Autre suggestion : gère les exceptions (en fait, là, comme ça, j'en voie qu'une : la division par un complexe nul)
++ !

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

CSharp.Net [ par PPA34 ] Bonjour, je voudrais savoir s'il existe un moyen d'insérer un "clearscreen" dans un programme en mode console ?Si oui, dites-moi comment ...Merci apercu et impression cSharp .net [ par lolhangman ] Bonjour, voila je suis super debutant en .net et cSharp et j'ai besoin d'imprimer le contenue d'une page. En fait tous mes resultats sont stoqu&#233;s CSharp .NET ressources [ par Ombitious_Developper ] Salut Tous :Je suis débutant en C#, je souhaite avoir un bonne ressource (cours, eBook, réfèrence, ...) pour bien démarrer en C# et .NETJe compte sur Utilité du CSharp/.NET [ par niceboy ] Slt,Quasiment personne n'a le Framework SDK d'installé sur son ordinateur.Et s'il faut obligatoirement l'installer pour pouvoir lancer, utiliser les p vb.net est-il développé en csharp ?? [ par hadhber ] vb.net est-il développé en csharp ?? csharp et .NET (redimentionnement d'element) [ par Co2r ] HelloJ'ai un petit probleme en csharp sous windows.Enfaite j'ai une fenetre composé de trois elements deux listBox cote a cote un à droite un à gauche Un tutoriel pour apprendre de A à Z le langage ! [ par Staify ] Bonjour,Après avoir parcouru le net à la recherche d'un tutoriel apprenant le C# (je dis le net, mais même la bibliothèque '--) de A à Z j'en appelle traitement d'image [ par khabdou ] Salut pour tous les développeurs,svp est ce que quelqu'un qui sait un logiciel de traitement d'image développé par vb.net ou C#,comme par exemple Pain Lancer et integrer un .exe dans une appli .net ? [ par kaervas ] Bonjour,Je suis en train de developper un programme en C#/.net 3.5 et j'aimerais lancer un .exe et integrer son processus ET son affichage graphique à


Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,13 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.