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 :

je veux utiliser PI en C++??? est ce possible?


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 85
    Par défaut je veux utiliser PI en C++??? est ce possible?
    merci

    xavier

  2. #2
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Mais de rien. Voici les règles:
    http://club.developpez.com/regles/

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 85
    Par défaut
    bonjour,
    je fais une petite routine qui doit utiliser Pi.
    Cette variable est-elle définie en C++?
    Xavier

  4. #4
    Membre chevronné
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Par défaut
    Salut !

    Oui, va voir du côté de math.h, il y a une variable M_PI je crois...

    a+

  5. #5
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par mathieu_t
    Oui, va voir du côté de math.h, il y a une variable M_PI je crois...
    C'est une macro demandee par Posix mais pas par la norme du C++ (ni du C). Je ne sais pas combien cette definition est repandue en dehors des Unix.

  6. #6
    Membre chevronné
    Avatar de bigquick
    Profil pro
    Inscrit en
    Août 2002
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 356
    Par défaut
    Salut

    Pour être sur qu'elle soit définie, tu peux ajouter cette définition dans le fichier qui l'utilise (ou dans un header qui convient) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #ifndef M_PI
       #define M_PI 3.14159265358979323846
    #endif

  7. #7
    Membre chevronné
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    C'est une macro demandee par Posix mais pas par la norme du C++ (ni du C). Je ne sais pas combien cette definition est repandue en dehors des Unix.
    En tout cas je l'ai déjà utilisé sous Windows, avec C++ Builder il me semble...

  8. #8
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Sous VC++ par défaut elle passe pas, y'a un #define à faire (_USE_MATH_DEFINES).

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Par défaut
    Citation Envoyé par bigquick
    Salut

    Pour être sur qu'elle soit définie, tu peux ajouter cette définition dans le fichier qui l'utilise (ou dans un header qui convient) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #ifndef M_PI
       #define M_PI 3.14159265358979323846
    #endif
    Beurk !

  10. #10
    Membre chevronné
    Avatar de bigquick
    Profil pro
    Inscrit en
    Août 2002
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 356
    Par défaut
    Citation Envoyé par VoidSeer
    Beurk !
    Histoire d'être constructif, tu voudrais pas proposer une solution qui marcherait avec n'importe quel compilateur ?

    Je sais, un #define c'est pas top, ça serait mieux de faire quelque chose du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const double g_Pi = 3.14159265358979323846;
    La solution du define permet juste de rester "plus ou moins" standard (rappel: C'est une macro demandee par Posix), en définissant M_PI quand il ne l'est pas...

    Mais vas y je t'en prie, propose autre chose ....

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Par défaut
    PI est une constante comme une autre. Y'a déjà eu pas mal de sujet sur 'comment éviter les #define' pour définir des constantes et pourquoi. C'est soit dans la FAQ, soit dans le forum

  12. #12
    Membre chevronné
    Avatar de bigquick
    Profil pro
    Inscrit en
    Août 2002
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 356
    Par défaut
    Oui merci je sais comment éviter les #define, et je suis le premier à dire qu'il faut privilegier les constantes. Mais en pratique, M_PI existe, il est "demandé" par la norme Posix, et quand il est défini, c'est généralement un par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define M_PI 3.14159265358979323846
    (enfin les fois ou j'ai pu verifier)

    Après, on peut faire tout un débat sur "est-ce qu'il faut redéfinir une constante PI dans nos programmes ou utiliser le #define fourni par <math.h>"

    Enfin pour répondre à la question originale, tu as deux possibilités (entres autres surement):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    const double g_Pi = 3.14159265358979323846;
     
    ou
     
    #ifndef M_PI
       #define M_PI 3.14159265358979323846
    #endif
    J'espère que l'ambiance du post ne te découragera pas, c'est un très bon forum

  13. #13
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Par défaut
    J'ai eu le cas de PI y'a pas longtemps. Effectivement il est présent 'parfois' dans cmath.
    Norme POSIX ou pas, il ne fait pas partie du langage en standad et franchement, se battre avec des #ifdef et compagnie j'ai trouvé ça plus que moyen.
    <math.h> peut être inclus à partir de fichier C aussi, d'où le #define je pense. Mais si le projet est en C++, alors, une constante perso et un bon copier-coller de la valeur AMHA sont préférable.
    Dans notre bibliothèque, toutes les constantes sont regroupée en tant que membre statiques d'une classe Math. Ca evite les defines, et les déclarations qui se baladent.

  14. #14
    Membre chevronné
    Avatar de bigquick
    Profil pro
    Inscrit en
    Août 2002
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 356
    Par défaut
    Oui ok, je suis d'accord, c'est surement préférable. J'ai proposé ça puisque on parlait justement de #define M_PI qui était parfois présent...
    Enfin par contre j'aurai mis tout ça dans un namespace plutôt que statique dans une classe (suite à une remarque judicieuse qu'on m'avait faite ici il y a un moment, d'ailleurs ).

    Par contre je ne comprends pas
    <math.h> peut être inclus à partir de fichier C aussi, d'où le #define je pense
    Pourquoi la constante ne marcherait pas aussi en C ? Ou alors est-ce qu'il y a un lien fort C / Posix ?
    Enfin c'est dommage qu'une bilibothèque "standard" utilise des techniques peu recommendables !

    Enfin sinon, ok, let's settle for const double Pi

  15. #15
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Par défaut
    namespace ou classe, ça ne change rien. Sauf pour la cohérence globale et la doc.
    Personnellement, je n'aime pas avoir des données qui se baladent en dehors d'un objet, mais c'est plus une question de style.

    Quand au pourquoi la constante ne marcherais pas en C. Je pense que M_PI a été introduit à une époque ou le mot-clef 'const' n'existait pas en C.

  16. #16
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Ben on peut pas définir une constante dans un .h.

  17. #17
    Membre chevronné
    Avatar de bigquick
    Profil pro
    Inscrit en
    Août 2002
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 356
    Par défaut
    Ah bah oui

    Sinon pour le namespace, c'est vrai que c'est une question de style. Quand on m'avait préconisé ça (il y a longtemps), je ne me souviens pas d'arguments particuliers niceau performance ou autre ....

    D'ailleurs, est-ce que la recherche dans le forum est "limitée" en temps ? Je ne retrouve plus le topic en question ....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. est-il possible d'utiliser Mysql et du php sur un cd-rom??
    Par swan dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 01/05/2011, 16h23
  2. Utiliser la console Windows, est-ce possible ?
    Par djfrancky dans le forum SDL
    Réponses: 4
    Dernier message: 21/08/2007, 18h15
  3. Réponses: 2
    Dernier message: 16/12/2006, 17h37
  4. Est-il possible d'utiliser des fichiers xsl en cascade ?
    Par Faekk dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 22/08/2005, 12h34
  5. Réponses: 1
    Dernier message: 28/04/2004, 19h18

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