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 :

Equation du 2e degré


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 29
    Par défaut Equation du 2e degré
    Bonjour a tous,

    Tout d’abord un grand merci à tous ceux qui mont déjà aidé.
    Même à ceux qui se sont montrés un peu blessant .
    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
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
     
     
    double fct_delta(double a, double b, double c)
    {
        return (pow(b,2)-4*a*c);
    }
     
    double fct_x1(double b, double delta, double a)
    {
        return (((-b)+(sqrt(delta)))/(2*a));
    }
     
    double fct_x2(double b, double delta, double a)
    {
        return (((-b)-(sqrt(delta)))/(2*a));
    }
     
    double fct_partie_reel(double a, double b)
    {
        return ((-b)/(2*a));
    }
     
    double fct_partie_complexe(double delta, double a)
    {
        return (fabs((sqrt(delta))/(2*a)));
    }
     
    double fct_racine_droite(double b, double c)
    {
        return (-c/b);
    }
     
    void fct_affichage()
    {
        printf("\nResolution equation du second degree racine reel et irreel.\n");
    }
     
    void fct_affichage_a(double a)
    {
        printf("\nEntree la valeur a =");
    }
     
    void fct_affichage_b(double b)
    {
        printf("\nEntree la valeur b =");
    }
     
    void fct_affichage_c(double c)
    {
        printf("\nEntree la valeur c =");
    }
     
    void fct_resultat_dela(double delta)
    {
        printf("\ndelta = %0.3f\n", delta);
    }
     
     
    int main()
    {
        double a=0, b=0, c=0;
        double delta=0;
        double x1=0, x2=0;
        double partie_reel=0, partie_complexe=0;
        double racine_droite=0;
     
        fct_affichage();
     
        fct_affichage_a(a);
        scanf("%lf", &a);
     
        fct_affichage_b(b);
        scanf("%lf", &b);
     
        fct_affichage_c(c);
        scanf("%lf", &c);
     
        delta=fct_delta(a, b, c);
        fct_resultat_dela(delta);
     
        if (a!=0)
        {
            if (delta>0)
            {
                x1=fct_x1(b, delta, a);
                printf("\nLa valeur de x1 = %0.2f\n", x1);
                x2=fct_x2(b, delta, a);
                printf("\nLa valeur de x1 = %0.4f\n", x2);
            }
            else if (delta==0)
            {
                x1=fct_x1(b, delta, a);
                printf("\nLa valeur de x1 = %0.3f\n", x1);
                x2=fct_x2(b, delta, a);
                printf("\nLa valeur de x1 = %0.3f\n", x2);
            }
            else
            {
                partie_reel=fct_partie_reel(a, b);
                partie_complexe=fct_partie_complexe(delta, a);
                printf("\nLa valeur de x1 = %f + %fi\n", partie_reel, partie_complexe);
                printf("\nLa valeur de x1 = %f - %fi\n", partie_reel, partie_complexe);
            }
        }
        else if (b!=0 && c!=0)
        {
            printf("\nC'est une eqution du 1 er degree : bX+c");
            racine_droite=fct_racine_droite(b, c);
            printf("\nLa valeur de cette racine = %f", racine_droite);
        }
        else if (a==0 && b==0 && c==0)
        {
            printf("\nL'equation n'est pas resolvable.\n");
        }
        else
        {
            printf("\nL'equation est en realite un point.\n");
        }
     
        return 0;
    }
    voici mon programme équation du 2e dégré, que j'ai tapé moi même tout seul comme un grand et que je n'ai ni copié ni photocopié.
    Ma fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    double fct_partie_complexe(double delta, double a)
    {
        return (fabs((sqrt(delta))/(2*a)));
    }
    ne fonctionne pas.

    De plus ma fonction,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void fct_affichage_resultat(double somme, double multiplication, double division)
    ne compile pas.

    Pourriez-vous m'aider SVP ?

    Merci d'avance,

    Kumral

  2. #2
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut
    Quand tu dis que ta fonction ne fonctionne pas? c'est à dire? problème de compilation? elle ne retourne pas le résultat que tu attendais?

    Soit un peu plus précis sur ta demande .

  3. #3
    Membre actif
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 29
    Par défaut
    Citation Envoyé par skeud Voir le message
    Quand tu dis que ta fonction ne fonctionne pas? c'est à dire? problème de compilation? elle ne retourne pas le résultat que tu attendais?

    Soit un peu plus précis sur ta demande .
    La compilation fonctionne mais lorsque j'entre pour a=1 ; b=2 ; c=3.
    Je devrais avoir 2 racine complexes avec une partie réel et une
    partie imaginaire, c'est la partie imaginaire qui ne fonctionne pas.

    donc c'est la fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    double fct_partie_complexe(double delta, double a)
    {
        return (fabs((sqrt(delta))/(2*a)));
    }
    qui contient sans doute une erreur, mais je ne la trouve pas.

    Merci d'avance pour votre aide,

    Kumral

  4. #4
    Membre Expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Par défaut
    Là tout de suite maintenant je n'ai plus beaucoup de souvenirs des nombres complexes...

    Mais as-tu essayé d'afficher les paramètres passés à fct_partie_complexe ?
    Un ch'ti printf de delta et a pour démarrer...
    Puis afficher le résultat de chaque opération : sqrt(delta), 2*a
    Afficher la division sqrt(delta) / (2*a) => qui risque d'être la cause du problème vu que ce sera une division entière il me semble
    Et afficher la totale : fabs((sqrt(delta))/(2*a)
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  5. #5
    Membre actif
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 29
    Par défaut
    Oui en règle général, je printf pour savoir ou mon programme bloque
    la compilation. Je fait ça étape par étape. Mais ici, cela ne m'a pas trop
    avancer non plus.

    Je vais revoir cela au calme.

  6. #6
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut
    ça serait bien de donné un peu plus d'information, genre le résultat obtenu et le résultat attendu.

    Pour ce que j'en lis:
    sqrt te donnera un float, sauf que quand tu le divise par 2a, tu repasse en int
    essaye en rajoutant un cast float devant ta racine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    double fct_partie_complexe(double delta, double a)
    {
        return (fabs((float)(sqrt(delta))/(2*a)));
    }
    Avec un peu de chance, c'est ton soucis.

  7. #7
    Membre Expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Par défaut
    On est deux à penser à la division !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    double fct_partie_complexe(double delta, double a)
    {
      printf("a : %f  delta : %f\n", a, delta);
      printf("sqrt : %f  2a : %f\n", sqrt(delta), 2*a);
      printf("div double : %f\n", (sqrt(delta) / (2*a)) );
      printf("div int : %d\n", (sqrt(delta) / (2*a)) );
      printf("res : %f\n", fabs((sqrt(delta))/(2*a)));
      return (fabs((sqrt(delta))/(2*a)));
    }
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par skeud Voir le message
    sqrt te donnera un float, sauf que quand tu le divise par 2a, tu repasse en int
    Absolument pas. Une opération se fait toujours dans le type le plus large des opérandes présents. Donc un float divisé par un int donnera un float.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 197
    Billets dans le blog
    47
    Par défaut
    salut,

    Citation Envoyé par Kumral Voir le message
    La compilation fonctionne mais lorsque j'entre pour a=1 ; b=2 ; c=3.
    Je devrais avoir 2 racine complexes avec une partie réel et une
    partie imaginaire, c'est la partie imaginaire qui ne fonctionne pas.
    donc delta<0, non ?

    Et qu'arrive-t-il lorsqu'on prend la racine carrée d'un nombre négatif ?

  10. #10
    Membre Expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Par défaut
    Sans souvenir spécifique... je suis encore PLUS convaincu par la réponse de f-leb que par celles de la division !

    Et tous les printf te l'auraient montré qu'il y aurait un problème à ce moment-là !
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  11. #11
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par f-leb Voir le message
    salut,



    donc delta<0, non ?

    Et qu'arrive-t-il lorsqu'on prend la racine carrée d'un nombre négatif ?
    Effectivement j'avais pas pris en compte le fait que le delta serait négatif, +1 sur la réponse .

  12. #12
    Membre Expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Par défaut
    Je ne vois aucune fonction "fct_void"...
    Alors soit ce sont mes yeux... soit c'est ton post qui n'est pas complet !

    Une ligne précise d'erreur/mauvais fonctionnement ?


    EDIT : le post a été édité, merci !
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

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

Discussions similaires

  1. Resolution d'equation du quatrieme degré
    Par Lucie Mor dans le forum Mathématiques
    Réponses: 6
    Dernier message: 03/04/2008, 00h31
  2. Equation du 2ème degré
    Par vip4e dans le forum Pascal
    Réponses: 27
    Dernier message: 24/01/2008, 15h40
  3. Réponses: 6
    Dernier message: 17/11/2007, 13h17
  4. prbleme de resolution d'equation de 2eme degres ds builder c++
    Par nabilfaouzi dans le forum C++Builder
    Réponses: 8
    Dernier message: 07/11/2007, 19h36
  5. [TP] Equation du second degré
    Par WhiteTigerZ dans le forum Turbo Pascal
    Réponses: 8
    Dernier message: 08/11/2006, 22h00

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