begin process at 2008 08 21 05:29:55
1 229 221 membres
52 nouveaux aujourd'hui
14 260 membres club

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 !

Sujet : Utilisation des complexes de la STL [ Algorithme / Maths ] (Fr33z)

Utilisation des complexes de la STL le 17/07/2008 03:41:56

Fr33z
Bonjour à tous,

 j'aurais aimé savoir comment je peux faire pour changer la valeur "manuellement" d'un nombre complexe défini à l'aide des templates complex STL :


#include <complex>

using namespace std;

int main()
{
  complex<long double> a(3,4);
  //ici a vaut 3+4i
  
  //là j'aimerai par exemple changer sa valeur à 5+6i, par exemple
}

J'aimerais pouvoir changer cette valeur sans avoir à reconstruire l'objet car cette opération doit être effectuée un grand nombre de fois et rapidement... De plus, je sais que le constructeur est surchargé , et que l'on peut séparer la déclaration de l'affectation car une instruction du type complex<long double> a; ne génère pas d'erreur... Mais que mettre après ? a=(5,6) par exemple ne fonctionne pas...

Merci d'avance !

Re : Utilisation des complexes de la STL le 17/07/2008 10:16:19

jfrancois
Réponse acceptée !

Bonjour,

Voilà un exemple :

#include <stdio.h>
#include <complex>

using namespace std;

int main()
{
  complex<long double> a(3,4);
  //ici a vaut 3+4i
  printf("a = %.2lf + %.2lfi\n",a.real(),a.imag());

  //là j'aimerai par exemple changer sa valeur à 5+6i, par exemple
  a.real(5);
  a.imag(6);
  printf("a = %.2lf + %.2lfi\n",a.real(),a.imag());
}

Ce qui donne :

a = 3.00 + 4.00i
a = 5.00 + 6.00i

Jean-François


Re : Utilisation des complexes de la STL le 17/07/2008 10:21:11

Fr33z
Bonjour, merci pour cette réponse.
J'ai également trouvé une autre façon cette nuit :

a.real() = 5;
a.imag() = 6;

Cette syntaxe semble également fonctionner...
Cordialement


Re : Utilisation des complexes de la STL le 17/07/2008 10:52:04

jfrancois
Réponse acceptée !
C'est refusé sous Visual C++ 6.0 (et heureusement car ça ne veut rien dire) !
Vous utilisez quel compilateur ?

Il y a aussi a = 5; pour générer 5+0i  (partie imaginaire nulle systématiquement).

Jean-François


Re : Utilisation des complexes de la STL le 17/07/2008 11:09:05

Fr33z
J'utilise GNU GCC Compiler, celui par defaut avec code::blocks. Connaissez vous les avantages/désavangages de Visual c++ par rapport à code::blocks ? J'envisage de changer d'ide, et Visual c++ a l'air plus complet...


Je me disais bien que cette syntaxe était vraiment étrange.
J'ai refait des essais, et cette syntaxe n'a plus compilé. J'avais dû faire une erreur.

Cordialement

Re : Utilisation des complexes de la STL le 17/07/2008 11:36:21

jfrancois
J'utilise Visual C++ 6.0 depuis qu'il est sorti (en 1998 je crois) et j'en suis très content (je n'utilise absolument pas la partie "Visual", je code tout --> je maîtrise tout). Il ne connaît pas les dernières nouveautés disponibles sous Windows mais je les ajoutent au fur et à mesure de mes besoins ! Bien sûr il y a des versions beaucoup plus récentes et dispo en version gratuite (mais limitée) comme Visual C++ 2008 Express.

Quant à Code::Blocks je l'ai installé il y a quelques mois pour tester une réponse faite ici et tout c'est bien passé ! Tous les codes faits sous Visual C++ testés sous Code::Blocks sont passés à un détail près concernant les déclarations des variables dans les boucles for ! (la variable est locale à la boucle avec Code::Blocks et continue d'exister après la boucle avec Visual C++, je trouve que Code::Blocks est plus "propre" dans ce cas là).

Jean-François


Re : Utilisation des complexes de la STL le 17/07/2008 11:42:16

Fr33z
Merci beaucoup pour ces précisions.
Je vais donc me procurer la version limitée pour me forger une opinion.
(c'est curieux pour la portée des variables, je croyais la norme c++ indique la portée de la variable à l'intérieur de la boucle...)
 
Cordialement.

Re : Utilisation des complexes de la STL le 17/07/2008 13:30:29

luhtor
Réponse acceptée !
"C'est refusé sous Visual C++ 6.0 (et heureusement car ça ne veut rien dire) !"
=> Bien sur que si, ca veut dire quelque chose. Cette syntaxe est tout a fait correcte:
a.real() = 5;
a.imag() = 6;

Puisque si vous regardez la classe Complex, vous trouvez les deux fonctions suivantes:
///  Return real part of complex number.
      _Tp& real();
///  Return imaginary part of complex number.
      _Tp& imag();

Ce qui rend la syntaxe ci dessus légale et normale. Peut etre que sous Visual C++ 6.0, l'implémentation est légèrement différente.


Re : Utilisation des complexes de la STL le 17/07/2008 14:39:40

jfrancois
Cette spécification est absurde. "fonction = qq chose" ça ne veut rien dire, c'est une absurdité sémantique : une fonction ça retourne qq chose, explicitement ou implicitement, ça ne prend pas qq chose !

Et en ce qui concerne C++ cette absurdité ne fonctionne que si la fonction retourne une référence ce qui n'est pas le cas ici sous VC++ !

Jean-François


Re : Utilisation des complexes de la STL le 17/07/2008 17:51:07

luhtor
Non cette spécification est parfaitement correcte. Une fonction ca ne représente rien ! c'est uniquement son type de retour qui a un sens. Et en l'occurence il s'agit d'un référence, ou encore d'un pointeur déguisé.

""fonction = qq chose" ça ne veut rien dire"
=> Il s'agit plutot de : "ce que la fonction retourne = qq chose"

"Et en ce qui concerne C++ cette absurdité ne fonctionne que si la fonction retourne une référence"
=> Bas oui, c'est justement le cas ici:
///  Return real part of complex number.
      _Tp& real();



[Page 1 Page 2]
Classé sous : changer, valeur, exemple, stl, complex

Participer à cet échange

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
extraction dinformatio...
Budget : 300€
campagne Adwords
Budget : 5 000€

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS