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 :

Programmation de complexe sous C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Par défaut Programmation de complexe sous C
    Bonsoir mes amis, je suis entrein de faire un exercice sur les complexe pour me preparer pour un exam et j'aimerais bien savoir votre avis des mon programme j'ai des question que j'ai du mal à faire.

    1) Structure complexe.
    2) Somme de complexe.
    3) multiplication complexe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    typedef struct complexe
    {
        int Partie_Re;
        int Partie_Im;
    }complexe;
     
    complexe somme(complexe *z1, complexe *z2)
    {
        int somme_Re;
        int somme_Im;
        complexe *somme_Total;
        somme_Re = z1->Partie_Re + z2->Partie_Re;
        somme_Im = z1->Partie_Im + z2->Partie_Im;
        somme_Total-> Partie_Re = somme_Re;
        somme_Total->Partie_Im = somme_Im;
        return somme_Total;
    }
     
    complexe multiplication( complexe *z1, complexe *z2)
    {
        int multi_Re, multi_Im;
        complexe *multi_Total;
        multi_Re = (z1->Partie_Re * z2->Partie_Re) + (z1->Partie_Im * z2->Partie_Im);
        multi_Im = (z1->Partie_Re * z2->Partie_Im) + (z1->Partie_Im * z2->Partie_Re);
        multi_Total->Partie_Re = multi_Re;
        multi_Total->Partie_Im = multi_Im;
        return multi_Total;
    }

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Par défaut
    vous pouvez me dire ce que vou pensez de ma premiere partie.

  3. #3
    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
    - J'aurais mis double à la place de int pour les parties réelle et imaginaire.
    - Pour les prototypes, j'aurais écrit COMPLEXE somme(const COMPLEXE * z1, const COMPLEXE * z2), où COMPLEX est un typedef de struct complexe. Cf const.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Par défaut
    j'ai une question à te poser, comment allouer la memoire pour un polynome de complexe de degre d, j'ai du mal à comprendre le principe de malloc

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Par défaut
    j'ai fait un petit programme et j'aimerais savoir ce que tu pense stp,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    typedef struct poly
    {
        int d;
        complexe *coef;
    }poly;
     
    poly allouePoly(int degre)
    {
        poly *p;
        p->d = degre;
        p= (poly *) malloc (sizeof(poly));
        return *p;
     
    }

  6. #6
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    complexe somme(complexe *z1, complexe *z2)
    {
    ....
        complexe *somme_Total;
    ....
        return somme_Total;
    }
    somme_Total n'est pas un complexe, mais un complexe * : un pointeur sur complexe. somme_Total est donc destiné à recevoir l'adresse d'un complexe. Pour l'instant, ce complexe n'existe pas.
    En fait, il te faut un complexe pour recevoir le résultat et tu veux en renvoyer une copie. On aura donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    complexe somme(complexe *z1, complexe *z2)
    {
        complexe somme_Total;
        somme_Total.Partie_Re = z1->Partie_Re + z2->Partie_Re;
        somme_Total.Partie_Im  = z1->Partie_Im + z2->Partie_Im;
        return somme_Total;
    }
    Même remarque pour multiplication() avec en plus une erreur dans la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        multi_Re = (z1->Partie_Re * z2->Partie_Re) - (z1->Partie_Im * z2->Partie_Im);

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 5
    Par défaut Problème découlant de la situation précédente
    Bonjour à tous !

    Pour un calcul assez bourrin, j'ai besoin d'utiliser les complexes. A ce que j'ai compris, en C, on ne peut pas y couper: il faut les implémenter. N'ayant pas trouver de bout de code tout prêt tout chaud, je me suis rabattu sur le fils de discussion actuel. En reprenant les bouts de codes et les corrections de chacun, j'ai fait ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #include "Test.h"
     
    Complex somme(Complex *z1, Complex *z2)
    {
        Complex *somme_Total;
        somme_Total->reel = z1->reel + z2->reel;
        somme_Total->imag = z1->imag + z2->imag;
        return *somme_Total;
    }
    Dans test j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    typedef struct Complex Complex;
    struct Complex {
        double reel;
        double imag;
    };
    Complex somme(Complex*, Complex*);
    Et dans ma main, qui fait d'autres choses mais qui ne plantait pas avant que j'introduise au tout début de la main un test de la fonction somme (donc c'est à cause de somme que le programme plante je pense), j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include "Test.h"
     
    int main()
    {
        printf("Programme de calcul des valeurs a fournir a l Eprom\n");
     
        // Test de la structure Complex
     
        Complex za = {3,4};
        Complex zb = {6,-4};
        printf("za.reel: %f et za.imag: %f", za.reel, za.imag);
        somme(&za,&zb);
    Voilà voilou, NB: le printf se fait sans problème.

    Bon été à tous !

Discussions similaires

  1. [CDT] Programmer en C sous eclipse
    Par mrttlemonde dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 28/03/2006, 21h48
  2. Réponses: 11
    Dernier message: 14/02/2006, 00h26
  3. Liste des programme ou applications sous windows xp
    Par bob40 dans le forum Windows XP
    Réponses: 1
    Dernier message: 12/01/2006, 02h14
  4. Réponses: 1
    Dernier message: 30/11/2005, 23h14
  5. Réponses: 4
    Dernier message: 24/10/2005, 08h36

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