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 :

Adresse de parametre


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    4
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 4
    Par défaut Adresse de parametre
    Bonjour a tous,
    Merci de m apporter une aide pour resoudre mon probleme.
    En fait je veux presenter la reponse de mon equation complexe sous la reponse Z = a +ib; Mais je ne sais pas comment recuperer ou envoyer les adresses de la partie reelle et imaginaire a ma fonction main. voila mon code

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    include <math.h>
    #include <stdio.h>
     
    void equation( double a, double b, double c, double *x1, double *x2, double *z1,double *z2 )
     
    {
            double d = (pow(b,2)- 4*a*c);
            double D = 0;
            //int i;
            double help0, help1,help2,help3;
            double partieImag1,partieImag2, partieReelle1, partieReelle2;
            printf("\n Le discrminant est d = %.3lf\n",d );
     
     
     
            if (d < 0)
            {
                    printf("\n Solution complexe \n");
                    help0 = d;// le discriminant etant negatif 
                    help1 = - help0;//je prends la valeur positive
                    help2 = sqrt(help1);
                    help3 = - sqrt(help1);
                    partieReelle1 = (-b / 2 * a);
                    partieImag1 = (help2 / 2 * a);
                    partieReelle2 = (-b / 2 * a);
                    partieImag2 = (help3 / 2 * a);
     
                    *z1 = partieReelle1 + partieImag1 ;
                    *z2 = partieReelle2 + partieImag2 ;
     
     
     
            }
            else if (d == 0)
            { 
                    printf(" Une solution relle \n");
                    *x1 = (-b)/(2*a);
            }
            else 
            {
                    printf("\n Deux solution Reelles\n");
                    *x1 = (-b + sqrt (d))/ (2 * a);
                    *x2 = (-b - sqrt (d))/ (2 * a);
            }
     
     
    }
     
     
     
    main ()
    {
            double a,b,c,result1, result2, result3, result4;
            double partieImag1 = 0;
            double partieImag2 = 0;
            double partieReelle1 = 0;
            double partieReelle2 = 0;
            erg1 = 0;
            erg2 = 0;
            erg3 = 0;
            erg4 = 0;
            int i = 0;
     
            printf("Entrez a:\t");
            scanf("%lf", &a);
     
            printf("Entrez b:\t");
            scanf("%lf", &b);
     
            printf("Entrez c:\t");
            scanf("%lf", &c);
     
            equation (a,b,c,&result,&result2,&result3,&result4);
                 if(erg1 != 0 )
            {
            printf("\n x1 = %f \n",result1);
            }
            if(erg2 != 0)
            {
            printf("\n x2 = %f \n",result2);
            }
                    if(erg3 != 0)
                    {
                    printf("\n z1 = %f +  i %f \n",result3,partieReelle1,partieImag1);
                    }
                    if(erg4 != 0)
                    {
                    printf("\n z2 = %f + i %f \n",result4,partieReelle2,partieImag2);
                    }
          }

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    Salut, plusieurs petites choses

    1) le prototype de la fonction main n'est pas main() comme tu l'as écrit mais

    rajoute à return EXIT_SUCCESS à la fin de ton main

    2) Es-tu sûr de ton algo ? Tu as écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                   partieReelle1 = (-b / 2 * a);
                    partieImag1 = (help2 / 2 * a);
                    partieReelle2 = (-b / 2 * a);
                    partieImag2 = (help3 / 2 * a);
    ne serait-ce pas plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                   partieReelle1 = (-b / (2 * a));
                    partieImag1 = (help2 / (2 * a));
                    partieReelle2 = (-b / (2 * a));
                    partieImag2 = (help3 / (2 * a));
    3) Tu as écrit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                    *z1 = partieReelle1 + partieImag1 ;
                    *z2 = partieReelle2 + partieImag2 ;
    A quoi cela sert-il ?

    4) Pour répondre à ta question, comme ta fonction a énormément d'arguemnt, dans le cas complexe tu peux dire que

    x1 --> partie réelle de la 1e solution
    x2 --> partie réelle de la 2e solution
    z1 --> partie imaginaire de la 1e solution
    z2 --> partie imaginaire de la 2e solution

    voilà, ca devrait marcher.
    Sinon tu as aussi #include<complex.h>, sinon tu peux te faire une structure nombre complexe car un nombre réel est un nombre complexe

  3. #3
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    4
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 4
    Par défaut Ca marche
    Merci ca marche,
    j ai recupere les valeurs de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     partieReelle1 = (-b / (2 * a));
                    partieImag1 = (help2 / (2 * a));
                    partieReelle2 = (-b / (2 * a));
                    partieImag2 = (help3 / (2 * a));
    dans la main directement en ecrivant:
    {
    printf("\n z1 = %f + %fi \n",erg3,erg4);
    }
    if(erg4 != 0)
    {
    printf("\n z2 = %f + %f i\n", erg5,erg6);
    }
    mais pour les structures je ne vois pas comment faire.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    pour les structures tu peux faire comme ça :

    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
     
    typedef struct
    {
      double x; /* partie reelle */
      double y; /* partie imaginaire */
    } Complex;
     
    Complex z1,z2;
     
    if(discriminant < 0)
    alors
      z1->x=z2->x=-b/(2*a);
      z1->y=sqrt(discriminant)/(2*a);
      z2->y=-z1->y;
    sinon si (discrimant == 0)
    alors
      z1->x=z2->x=-b/(2*a);
      z1->y=z2->y=0.;
    sinon /* discriminant > 0 */
      z1->x=(-b+sqrt(discriminant))/(2*a);
      z2->x=(-b-sqrt(discriminant))/(2*a);
      z1->y=z2->y=0.;
    fin
    et ta fonction equation, au lieu de prendre plein d'arguments a,b,c,x1,x2,z1,z2, ne prend plus que a,b,c,z1,z2 comme arguments (tu peux aussi mettre a,b,c dans une structure Inputs par exemple)

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    oups, si discriminant < 0 il faut lire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    z1->y=sqrt(-discriminant)/(2*a);
    et non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    z1->y=sqrt(discriminant)/(2*a);

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    ouh là là, ce n'est pas z1->x mais z1.x qu'il faut lire. Idem pour z2.

    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
     
    if(discriminant < 0)
    alors
      z1.x=z2.x=-b/(2*a);
      z1.y=sqrt(-discriminant)/(2*a);
      z2.y=-z1.y;
    sinon si (discrimant == 0)
    alors
      z1.x=z2.x=-b/(2*a);
      z1.y=z2.y=0.;
    sinon /* discriminant > 0 */
      z1.x=(-b+sqrt(discriminant))/(2*a);
      z2.x=(-b-sqrt(discriminant))/(2*a);
      z1.y=z2.y=0.;
    fin

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/09/2008, 14h38
  2. Réponses: 2
    Dernier message: 10/08/2007, 18h07
  3. [Sécurité] Cacher les paramètres de l'adresse
    Par Seth77 dans le forum Langage
    Réponses: 5
    Dernier message: 18/05/2006, 10h32
  4. Réponses: 2
    Dernier message: 19/07/2005, 11h12
  5. [VB.NET] Parametrer l'adresse d'un web service
    Par Rami dans le forum ASP.NET
    Réponses: 3
    Dernier message: 25/11/2004, 18h24

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