2 votes

Opérations avec des nombres complexes

Je voudrais savoir comment effectuer certaines opérations simples avec des nombres complexes sans utiliser les parties réelle et imaginaire séparément.

Exemple:

complex A(0.0, 1.0);
complex B;
B = A * 2 + A;

Il ne compile pas:

erreur C2678 : opérateur binaire '*' : aucun opérateur trouvé qui prend un opérande de type 'std::complex' (ou il n'y a pas de conversion acceptable)).

J'ai lu que c'est un problème de conversion. C'est un vrai problème, surtout dans le cas de code plus complexe.

Existe-t-il un moyen de réaliser des opérations avec des nombres complexes?

3voto

Mark Wilkins Points 29291

Il pourrait s'agir d'un problème de conversion. Peut-être spécifier la constante 2 comme une valeur flottante:

B = A * 2.0 + A;

3voto

Ahmed Masud Points 6603

C'est un problème de conversion:

#include 
#include 
using namespace std;

int main ()
{
  complex A (5.0, 10.0);
  complex B;

  B = A * 2.0 + A; 
  cout << "B = " << B << endl;
  return 0;
} 

fonctionne plutôt bien.

2voto

0605002 Points 5702

C++ fournit la surcharge d'opérateur, qui peut être une manière très facile et conviviale de gérer cela.

Complexe opérateur + (Complexe a, Complexe b)
{
    return Complexe(a.reel + b.reel, a.imaginaire + b.imaginaire);
}

Complexe opérateur * (Complexe a, double b)
{
    return Complexe(a.reel * b, a.imaginaire * b);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X