Renseignements sur les structures en C
Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

Renseignements sur les structures en C



  1. #1
    invite8a011b82

    Renseignements sur les structures en C


    ------

    Bonjour,

    J'ai créée une structure qui me permet d'afficher un nombre complexe. Voici mon programme (il fonctionne):

    Code:
    typedef struct complexe complexe;
    
    struct complexe
           {
           double reel;
           double imaginaire;
           };
    
    int main(void)
        {
        complexe nbre;
        
        nbre.reel=1;
        nbre.imaginaire=5;
        
        printf("le nbre comple est : %f + %fi\n\n",nbre.reel, nbre.imaginaire);
    
    system ("pause");
    return 0;
       
        }
    J'ai réalisé ce programme afin de comprendre comment réaliser une structure. Mais pour mon application réelle la valeur de la partie réelle et imaginaire change tout le temps donc j'aimerai savoir comment je peux afficher mon nombre complexe.


    Merci pour votre aide.

    -----

  2. #2
    invite4492c379

    Re : Renseignements sur les structures en C

    Hello,

    tu écris une fonction qui renvoie un char* qui contient une chaîne qui représente ton complexe. Si tu appelles cette fonction ctoa tu pourras faire un simple printf("%s", ctoa(nombre_complexe)) par exemple

  3. #3
    invite8a011b82

    Re : Renseignements sur les structures en C

    Merci pour ta réponse rapide mais je ne suis pas sur que cela réponde à mon problème donc je vais mieux expliquer mon utilisation des complexes. Je programme une FFT en C et certain de mes résultats sont des nombres complexes donc j'aimerai savoir comment afficher ces nombres afin de vérifier les résultats obtenus lors des calculs.
    Je met le programme en précisant à chaque fois où mon résultat est en complexe en sachant qu'il ne l'est pas à chaque boucle.

    Désolé j'aurai du tout de suite planté le décor.

    Code:
    typedef struct complexe complexe;
    
    struct complexe
           {
           double reel;
           double imaginaire;
           };
    	   
    int pas=8;
    
    void tranformee_fourier_discrete (double *g_val_classe)
    { 
    int expn=0, exp, l=0, i=0, d=0, m=0, k=0;
    double p=0, n=0, M; 
    complexe Wb=0, W=0, X[pas];
    
    
    n=frexp((float)pas, &expn);
    exp=expn-1;
    
    
    for(k=1;k<=exp;k++)
    	{
        p=pow(2,(k-1)); 
    	
    	if(p==0)
    	   Wb=-1;
        else      
            Wb=pow(-1,1/p); // nbre complexe à afficher
    		
        M=pow(2,exp-k);     
        for(m=1;m<=M;m++) 
    		{
            W=1; // nbre complexe à afficher
    		 
            d=(m-1)*2*p+1; 
            for(i=1; i<=p;i++) 
    			{
                l=d+i-1; 
                g_val_classe[l+(int)p]=W*g_val_classe[l+(int)p];			
                X[l]=g_val_classe[l]+g_val_classe[l+(int)p];	// nbre complexe à afficher		
                X[l+(int)p]=g_val_classe[l]-g_val_classe[l+(int)p];	// nbre complexe à afficher		
                W=W*Wb; 
    			}
    		}
        g_val_classe[k+1] = X[k]; 
    	}
    }

    Merci

  4. #4
    invite4492c379

    Re : Renseignements sur les structures en C

    Re-,

    n'oublie pas que si tu définis un nouveau type, il va falloir aussi écrire toutes les fonctions pour manipuler ce type. Il va te falloir écrire la fonction complexe puiss(complexe b, complexe e) par exemple ...

  5. A voir en vidéo sur Futura
  6. #5
    lou_ibmix_xi

    Re : Renseignements sur les structures en C

    j'aimerai savoir comment afficher ces nombres afin de vérifier les résultats obtenus lors des calculs.
    Exactement comme tu as fait dans ton programme d'exemple, tu affiches un champ après l'autre.

    En revanche, ton 2ème code montre que tu as à moitié compris l'utilisation d'une structure. Tes affectations du genre
    Code:
        if(p==0)
    	   Wb=-1;
        else      
            Wb=pow(-1,1/p);
    ne peuvent pas fonctionner puisque tu essaies d'affecter un "double" à une structure, alors que ce sont les champs de la structure qu'il faut affecter un à un (partie réelle puis partie imaginaire). Dans le même ordre d'idée, la multiplication
    Code:
    W = W * Wb;
    ne peut fonctionner, il faut que tu définisses une fonction qui fasse cela:
    Code:
    void multiplication_complexe (const struc complexe* c0, const struc complexe* c1, struc complexe* resultat) {
        resultat->reel = c0->reel * c1->reel - c0->imaginaire * c1->imaginaire;
        resultat->imaginaire = c0->reel * c1->imaginaire + c0->imaginaire * c1->reel;
    }
    Enfin, une dernière remarque (à ignorer si l'objet de l'exo est l'utilisation des structures), si ton compilateur est conforme avec la norme C99, le type "complex", ainsi que pas mal de fonctions mathématiques, sont pris en compte par le compilateur en incluant l'entête "complex.h".

  7. #6
    invite8a011b82

    Re : Renseignements sur les structures en C

    Ok daccord merci beaucoup je n'avais pas compris que la création de structure impliquait la création de fonction aussi simple que la puissance ou la multiplication. J'ai essayé l'entête "complex.h" mais le compilateur me renvoie ces erreurs:
    Code:
    5 D:\dev_Cpp\install\Dev-Cpp\include\c++\3.4.2\backward\complex.h:31, from D:\dev_Cp\prog\structure.cpp In file included from D:/dev_Cpp/install/Dev-Cpp/include/c++/3.4.2/backwar/complex.h:31, from D:\dev_Cpp\prog\structure.cpp 
    
    
    5 D:\dev_Cpp\prog\structure.cpp   from D:\dev_Cpp\prog\structure.cpp 
    
    
    32:2 D:\dev_Cpp\install\Dev-Cpp\include\c++\3.4.2\backward\backward_warning.h #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
    c'est pour cela que j'ai crée la structure. Comment je peux vérifier si mon compilateur est conforme avec la morne C99?

  8. #7
    invite4492c379

    Re : Renseignements sur les structures en C

    Il semble que par défaut tu essayes de compiler en C++ ..
    Quel est ton environnement de développement ?

  9. #8
    invite8a011b82

    Re : Renseignements sur les structures en C

    J'utilise DEV C++ 4.9.9.2

  10. #9
    invite4492c379

    Re : Renseignements sur les structures en C

    Je ne connais pas cet environnement. Le compilateur t'envoie juste un warning. Tu compiles en c++ et tu inclus un header prévu pour C.
    C'est le seul message lors de la compilation ?
    Essaye de compiler le source que tu peux trouver sur http://www.java2s.com/Tutorial/C/004...lexnumbers.htm, juste pour tester

  11. #10
    invite8a011b82

    Re : Renseignements sur les structures en C

    Je te met en PJ toutes les erreurs que j'ai.erreurs.jpg
    Images attachées Images attachées  

  12. #11
    invite4492c379

    Re : Renseignements sur les structures en C

    Hello,
    alors j'ai un peu cheché l'origine de ton problème ... dev c++ est istallé par défaut avec mingw comme compilateur par défaut. Tu compiles en mode c++. En regardant les erreurs produites j'ai trouvé quelques références sur le net. Essaye de renommer ton fichier avec l'extension .c au lieu de .cpp et fait un test. Tu me dis quoi après.

  13. #12
    Dlzlogic

    Re : Renseignements sur les structures en C

    Bonjour,
    Si je relis le titre, il s'agit d'étudier l'utilisation des structures, l'application aux complexes n'est qu'un moyen intéressant de comprendre comment ça fonctionne.
    La ligne "complexe W=0;" est tout à fait caractéristique. Il faut écrire
    W.reel=0.;
    W.imaginaire=0.;
    Et tout ce qui a été dit sur les fonctions à écrire (addition, multiplication etc) découlent de cela.

  14. #13
    invite8a011b82

    Re : Renseignements sur les structures en C

    Bonjour,

    Désolé de ne répondre que maintenant lorsque je compile mon fichier en .c avec l'entête "complex.h" il ne me met aucune erreur et la je suis en train de modifier mes variables et de créer mes fonctions mais je pense que comme le programme ira sur un microcontroleur par la suite je suis obligé de créer ces différentes fonctions mais merci quand même d'avoir résolu ce problème.

  15. #14
    invite4492c379

    Re : Renseignements sur les structures en C

    De rien, bon courage

Discussions similaires

  1. Question sur les structures algebriques
    Par invite5cc6acf0 dans le forum Mathématiques du supérieur
    Réponses: 6
    Dernier message: 19/08/2011, 16h08
  2. [L1]Besoin d'explications sur les structures algébriques
    Par invite811963fc dans le forum Mathématiques du supérieur
    Réponses: 23
    Dernier message: 26/11/2009, 11h12
  3. [Exercice] Effets des mutations sur les structures protéiques?
    Par invite7a14d388 dans le forum Biologie
    Réponses: 2
    Dernier message: 04/11/2009, 15h21
  4. papiers sur les nano structures
    Par Ludwig dans le forum Physique
    Réponses: 1
    Dernier message: 21/11/2006, 10h36