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 :

Mauvais calcul de a et de b dans f(x) = ax + b ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Par défaut Mauvais calcul de a et de b dans f(x) = ax + b ?
    Bonjour, j'ai un petit problème, voilà la fonction de mon fichier .c de la dll

    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
    char* SAMSOFT_MATHSDLL_API ss_calc_a_b_fct_lineaire(double y1, double y2, double x1, double x2)
    {
        //fonction permettant de trouver a et b d'une fonction linéaire de manière algébrique//
        //fonction exemple : f(x) = ax + b
        double a;
        double b;
        char* pBuffer = malloc(TAILLE_BUFFER * sizeof(*pBuffer));
     
        a = (y1 - y2)/(x1 - x2);
        b = y1 - a*x1;
     
        if(pBuffer != NULL)
        {
            sprintf(pBuffer, "f(x) = %fx + %f", a, b);
        }
     
        return pBuffer;
    }
    mon programme "test" :
    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
    #include <stdio.h>
    #include <stdlib.h>
    #include "samsoft_maths.h" //Contient les prototypes des fonctions de la Dll
     
    int main()
    {
        double x1, x2, y1, y2;
        char* resultat; //résultat//
     
               printf("\nTapez votre nombre x1 : ");
               fflush(stdout);
               scanf("%lf", &x1);
               printf("\nTapez votre nombre y1 : ");
               fflush(stdout);
               scanf("%lf", &y1);
               printf("\nTapez votre nombre x2 : ");
               fflush(stdout);
               scanf("%lf", &x2);
               printf("\nTapez votre nombre y2 : ");
               fflush(stdout);
               scanf("%lf", &y2);
               resultat = ss_calc_a_b_fct_lineaire(y1, y2, x1, x2);//Appel de la fonction ss_calc_a_b_fct_lineaire
               if (resultat != NULL)
               {
                  printf("\n%s\n\n", resultat);
                  free (resultat), resultat = NULL;
               }
               system("PAUSE");
               return EXIT_SUCCESS;
    }
    pour A(3;2) et B(-2;-2) il me retourne :

    a = 0.800000 et b = -0.400000 alors qu'il devrait retourner :
    a = 2.4 et b = -5.2

    car 2.4*3 + (-5.2) donne bien 2 !

    Quelle est la solution à mon problème ?

    Merci,

  2. #2
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par _SamSoft_

    a = 0.800000 et b = -0.400000 alors qu'il devrait retourner :
    a = 2.4 et b = -5.2

    car 2.4*3 + (-5.2) donne bien 2 !

    Quelle est la solution à mon problème ?

    Merci,
    a = 0.800000 et b = -0.4 est bien le résultat correct, car la pente de ta droite doit être inférieure à 1 et 0.8 * 3 - 0.4 = 2.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  3. #3
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par _SamSoft_
    pour A(3;2) et B(-2;-2) il me retourne :

    a = 0.800000 et b = -0.400000 alors qu'il devrait retourner :
    a = 2.4 et b = -5.2

    car 2.4*3 + (-5.2) donne bien 2 !

    Quelle est la solution à mon problème ?

    Merci,
    J'ajouterais que 2.4, -5.2 fonctionne pour ton point A mais pour le point B tu obtiens :

    2.4 * (-2) - 5.2 = -10...

    Jc

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par _SamSoft_
    Quelle est la solution à mon problème ?
    Révises ton cours de maths....

  5. #5
    Membre éclairé Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Par défaut
    Révises ton cours de maths....
    Non merci, je ne fais que ca, par contre j'aurais plûtot dû me coucher plus tôt et tester un calcul avec le résultat que j'ai obtenu grâce à mon programme au lieu de me dire qu'il était faux de plus hier j'ai bien vu que pour a = 2.4 et b = -5.2 ca ne marchais que pour A , vraiment quel idiot je fais.

    Merci encore de m'avoir ouvert les yeux (j'étais trop fatigué pour les ouvrir tout seul) !


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

Discussions similaires

  1. Calcul d'un nombre de caractères dans une chaîne
    Par Thekiller dans le forum Langage
    Réponses: 7
    Dernier message: 08/02/2010, 23h21
  2. Réponses: 2
    Dernier message: 20/11/2006, 21h19
  3. Réponses: 5
    Dernier message: 31/08/2006, 20h39
  4. Calculer la taille d'un texte dans un DC
    Par vanitom dans le forum MFC
    Réponses: 9
    Dernier message: 28/10/2005, 15h32
  5. Réponses: 2
    Dernier message: 21/07/2005, 11h50

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