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 :

Problème nombre complexe


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 7
    Par défaut Problème nombre complexe
    Bonjour à tous.
    Le programme que j'utilise pour écrire mon script en C est Code::Blocks. Je n'ai modifié aucune option depuis son installation. Le compilateur par défaut utilisé est GNU GCC.

    Je souhaite manipuler des variables complexes. En parcourant le forum, j'apprends qu'il me faut le header complex.h . Il est contenu dans le dossier programme=>codeblocks=>MinGw=>include. ça ne doit donc pas venir de là.
    Toujours en parcourant le forum, j'apprends que le compilateur doit pouvoir "supporter le C99". Je ne suis pas arrivée à voir comment le savoir (ni réellement à saisir à quoi correspondait cette "norme" C99).

    Afin de vous aider à mieux comprendre ce qu'il se passe, j'ai copié/collé un script proposé dans le forum pour vous montrer les erreurs affichées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    /* vérifions que (i*pi) == -1 */
    #include <math.h>       /* pour atan */
    #include <complex.h>
    int main()
    {
            double pi = 4*atan(1);
            complex z = cexp(I*pi);
            printf("%f+%f*i\n", creal(z), cimag(z));
            return (0);
    }
    Compile+execute

    Compiling: C:\Users\...\fichiertest.c
    C:\Users\...\fichiertest.c: In function `int main()':
    C:\Users\...\fichiertest.c:7: error: `complex' was not declared in this scope
    C:\...\fichiertest.c:7: error: expected `;' before "z"
    C:\Users\...\fichiertest.c:8: error: `z' was not declared in this scope
    C:\Users...\fichiertest.c:8: error: `printf' was not declared in this scope
    Process terminated with status 1 (0 minutes, 0 seconds)
    4 errors, 0 warnings

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    - Un programme écrit en C s'appelle un programme pas un script.
    - Quelle version de Code::Blocks utilises-tu ? J'utilise la version 8.02 et je n'ai aucun problème avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <math.h>
    #include <complex.h>
    #include <stdio.h>
    int main()
    {
            double pi = 4*atan(1);
            double complex z = cexp(I*pi);
            printf("%f+%f*i\n", creal(z), cimag(z));
            return (0);
    }
    => T'as oublié de déclarer stdio.h et de préciser le type que tu veux utiliser pour implémenter le nombre complexe z (ici j'ai mais double complexe vu que tu utilises cexp, creal et cimag qui travaillent avec des double complex).
    - La norme ISO/IEC 1998:1999 est le dernier document en date qui décrit le langage C. Le langage qui y est décrit est communément appelé C99 (vu que cette norme est sortie en 1999). La norme avant celle-ci était la norme ISO/IEC 1998:1990 et le langage qui y était décrit s'appelle vulgairement le C90. Le C99 est compatible avec le C90 (sauf sur un ou deux trucs qui sont rarement utilisés ...) mais le C90 est la version la plus supportée des compilateurs.
    - Pour utiliser le C99 avec Code::Blocks, ajouter parmi les options du compilateur (Project > Build Options > Other compiler options) :
    La plupart du temps ce n'est pas nécessaire vu les nouveautés de C99 sont des fonctionnalités qui ont déjà été supportées par GCC bien avant la sortie de la norme.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 7
    Par défaut
    Merci pour cette réponse claire.

    La version de code::blocks que j'utilise est aussi la 8.02.
    Je viens d'essayer ton programme, mais deux erreurs persistent toujours :

    C:\Users\...\fichiertest.c: In function `int main()':
    C:\Users\...\fichiertest.c:7: error: `complex' does not name a type
    C:\Users\...\fichiertest.c:8: error: `z' was not declared in this scope
    Process terminated with status 1 (0 minutes, 0 seconds)
    2 errors, 0 warnings

    Les as-tu aussi?

  4. #4
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Non je les ai pas. Zippe ton projet puis uploade-le.

  5. #5
    Membre émérite
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Par défaut
    Le paramètre pour compiler en C99 est :


  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 7
    Par défaut
    fichiertest: code que tu m'as donné.
    lilouproject : projet dans lequel j'ai réellement besoin d'utiliser les complexes.
    Fichiers attachés Fichiers attachés

  7. #7
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Je voulais parler du projet Code::Blocks, le fichier avec l'extension .cbp mais bon ... Voici ce que j'ai fait, ça compile sans erreur et ça fonctionne très bien.
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Problème pour calculer un nombre complexe en Fortran
    Par Flying Hermes dans le forum Fortran
    Réponses: 3
    Dernier message: 26/03/2017, 03h28
  2. Problème d'affichage d'un nombre complexe dans GUI
    Par clem3900 dans le forum MATLAB
    Réponses: 3
    Dernier message: 27/05/2013, 13h34
  3. [Nombre Complexe]affichage formatte
    Par parsy dans le forum Langage
    Réponses: 2
    Dernier message: 20/08/2005, 00h36
  4. Les nombres complexe et delphi
    Par wikers dans le forum Langage
    Réponses: 3
    Dernier message: 04/08/2005, 11h47
  5. [LG]Nombres complexes et forme polaire
    Par chavernac dans le forum Langage
    Réponses: 3
    Dernier message: 28/03/2005, 18h36

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