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:
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:
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, :?