IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Gestion des Nombres complexes


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 35
    Points : 23
    Points
    23
    Par défaut Gestion des Nombres complexes
    Bonjour,

    J'ai besoin d'utiliser des nombres complexes dans un programme en C++ Borland 6 et j'ai deux problèmes. Je définis les nombres complexes par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::complex<double> x;
    et les tableaux en dynamique (1 dimension) par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a = new std::complex<double> [nbre];
    Mes pbs sont les suivants:

    1- je n'arrive pas à trouver la syntaxe pour passer en paramètre un tableau de complexes. J'ai esssayé plusieurs possibilités sans succès, par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void __fastcall TPanneau_calcul_SDD::zroots(std::complex<double> a)
    Borland ne veut pas compiler.

    2- J'essaye de libérer la mémoire avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (a != NULL) delete [] a; et a = NULL;
    mais le programme plante.

    Je ne trouve pas grand chose sur le web. Quelqu'un pourrait-il m'aider ?

    Merci par avance

  2. #2
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    Essaye cela pour passer en argument ton tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void __fastcall TPanneau_calcul_SDD::zroots(std::complex<double> *a)

  3. #3
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    pourquoi ne pas passer par un vector?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    typedef std::vector< std::complex<double> > ComplexArray; // définition d'un tableau de complexes
    void __fastcall TPanneau_calcul_SDD::zroots( ComplexArray & a );
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 35
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par Flob91 Voir le message
    Essaye cela pour passer en argument ton tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void __fastcall TPanneau_calcul_SDD::zroots(std::complex<double> *a)
    Effectivement, cela marche. Je pensais avoir essayé cette solution parmi tous mes essais.

    Merci

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 35
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par r0d Voir le message
    Bonjour,

    pourquoi ne pas passer par un vector?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    typedef std::vector< std::complex<double> > ComplexArray; // définition d'un tableau de complexes
    void __fastcall TPanneau_calcul_SDD::zroots( ComplexArray & a );
    Merci pour cette idée. Je vais tester aussi.

  6. #6
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,
    Citation Envoyé par Lalanne Voir le message
    Merci pour cette idée. Je vais tester aussi.
    A vrai dire, tu devrait même prendre l'habitude de manipuler de préférence les conteneurs fournis par le langage à des tableau dont la mémoire est gérée dynamiquement...

    C'est une habitude qui est réellement de nature à t'éviter bien des soucis et des bugs dus
    • aux fuites mémoire provoquées par la non libération de celle-ci
    • aux tentatives de double libération de la mémoire
    • aux tentatives d'accès quelque chose qui est représenté par un pointeur devenu invalide (suite, par exemple, à la libération de la mémoire pointée)


    Tu trouve des conteneurs pour pratiquement tout: Cela va du tableau d'éléments contigus (vector) à des (multi)map capables de représenter une paire clé / valeur, en passant par les pile, les files, les listes et les sets (arbre binaire dans lequel l'élément représenté sert de clé)
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #7
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    A noter que si tu veux un tableau de taille fixe (dont la taille est fixée à la compilation, et bien sûr sous réserve que tu la connaisse ), Boost.Array est assez sympa et te permet d'utiliser tous les algos de la STL comme le permettrait vector

Discussions similaires

  1. Ma fonction me retourne des nombres complexes!
    Par FouadSami dans le forum MATLAB
    Réponses: 1
    Dernier message: 09/04/2009, 18h47
  2. utilisation des nombres complexes (C#)
    Par Bouyou1983 dans le forum C#
    Réponses: 2
    Dernier message: 22/04/2008, 19h18
  3. Gestion des nombre Hexadecimaux
    Par 250583 dans le forum Simulink
    Réponses: 8
    Dernier message: 25/04/2007, 12h13
  4. Utilisation des nombres complexes en C
    Par toupitoui dans le forum C
    Réponses: 4
    Dernier message: 01/11/2006, 15h50
  5. Gestion des nombres
    Par john55657 dans le forum Linux
    Réponses: 4
    Dernier message: 13/10/2006, 16h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo