Petit soucis calcule de polynome

Résolu/Fermé
jeancrien1121 Messages postés 16 Date d'inscription vendredi 21 juin 2013 Statut Membre Dernière intervention 14 septembre 2013 - Modifié par jeancrien1121 le 14/09/2013 à 02:16
jeancrien1121 Messages postés 16 Date d'inscription vendredi 21 juin 2013 Statut Membre Dernière intervention 14 septembre 2013 - 14 sept. 2013 à 21:08
Bonjour / Bonsoir a tous,
Alors voila pour mon cours de programmation je dois effectuer un petit pgm qui :

Afficher les valeurs de X et Y de tout polynôme de degré 10 ou inférieur. Les coefficients, ainsi que les limites et le pas de calcul, sont encodés par l'utilisateur");

voici ma fonction :

void Polynome()
{
system("cls");
int borneinf, bornesup, pas;
double Y, X;
int i;
double coefficient[10];

printf("Encodez les coefficients des termes en X <0 si terme absent> : \n");
for(i=10;i>=0;i--)
{
printf("Pour x^%d\t: ",i);
scanf("%lf",&coefficient[i]);
}
printf("\n\nBorne inferieure de x ? ");
scanf("%d",&borneinf);
printf("\nBorne superieur de x ? ");
scanf("%d",&bornesup);
printf("\nPas du calcul ? ");
scanf("%d",&pas);

printf("\n\nY = %.2f.x^10 + %.2f.x^9 + %.2f.x^8 + %.2f.x^7 + %.2f.x^6 + %.2f.x^5 + %.2f.x^4 + %.2f.x^3 + %.2f.x^2 + %.2f.x^1 + %.2f.x^0\n",coefficient[10],coefficient[9],coefficient[8],coefficient[7],coefficient[6],coefficient[5],coefficient[4],coefficient[3],coefficient[2],coefficient[1],coefficient[0]);

for (i = borneinf; i<=bornesup; i = i + pas)
{

printf("\nX = %d.0000 ", i);
Y=(pow(coefficient[10]*i, 10)) + (pow(coefficient[9]*i, 9)) + (pow(coefficient[8]*i, 8)) + (pow(coefficient[7]*i, 7)) + (pow(coefficient[6]*i, 6)) + (pow(coefficient[5]*i, 5)) + (pow(coefficient[4]*i, 4)) + (pow(coefficient[3]*i, 3)) + (pow(coefficient[2]*i, 2)) + (pow(coefficient[1]*i, 1)) + (pow(coefficient[0]*i, 0));
printf("\tY = %.2f", Y);
}

return;
}


Et je ne comprend pas pourquoi mes Y sont faut : / ils donnent une valeur inexacte ...
Mon problème se situe surtout au calcule de y.
Merci a ceux qui prendront le temps de m'aider :) et bonne route aux autres ;)

2 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
14 sept. 2013 à 12:20
Je n'ai pas tout regardé mais une erreur me saute aux yeux : tu utilises coefficient[10] alors que tu as définis double coefficient[10].
Lorsque tu utilises un tableau de taille n, tu ne peux utiliser que les cases allant de 0 à n-1. Donc soit tu redimensionnes ton tableau pour avoir double coefficient[11], soit tu enlèves la partie coefficient[10] dans tes calculs.

Au niveau de ton calcul je ne sais pas trop ce que tu veux faire, mais je pense qu'il faudrait remplacer pow(coefficient[j]*i, j) par pow(coefficient[j], j)*i
Remarque : utilises une boucle pour calculer Y !
0
jeancrien1121 Messages postés 16 Date d'inscription vendredi 21 juin 2013 Statut Membre Dernière intervention 14 septembre 2013
14 sept. 2013 à 19:44
Bon c'est vrai que le double coefficient[11] suis tous a fait d'accord avec toi ! :)
mais après plusieurs test même en remplaçant pow(coefficient[j]*i, j) par pow(coefficient[j], j)*i j'obtiens les même résultat erronée : /

enfet dans mon calcule d' "Y" ça donne
y = coefficient[10] (ce que l'user a entrer dans le tableau) * i ^10 + coefficient[9] * i ^9 et ainsi de suite.

Si vous lancez le programme vous comprendrez tous de suite ce que je cherche a faire pour y.
Pour la boucle je suis aussi d'accord mais ça devrait quand même fonctionner comme ça : / je voit vraiment pas l'erreur la : /
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
14 sept. 2013 à 19:50
Si vous lancez le programme vous comprendrez tous de suite ce que je cherche a faire pour y.
Pas besoin de le lancer, j'ai la formule sous les yeux !

Ce que je ne comprends pas c'est l'utilité de ton i, à quoi te sers ton pas ? Ce n'est peut-être pas une multiplication qu'il faut faire, mais une addition ?

pow(coefficient[j]+i, j)
0
jeancrien1121 Messages postés 16 Date d'inscription vendredi 21 juin 2013 Statut Membre Dernière intervention 14 septembre 2013
14 sept. 2013 à 20:04
j'ai un .exe qui est le corrigé et il demande le pas pour la valeur de x exemple borne inferieure = 1 borne supérieure = 8 au pas de 2
il me donnera y pour la valeur de x donc 1,3,5 et 7.
imaginons que dans mon tableau j'ai les valeur de 4 a 14,
bah y = 4*x^10 + 5*x^9 + 6*x^8 + 7*x^7 + 8*x^6 + 9*x^5 + 10*x^4 + 11*x^3 + 12*x^2 + 13*x^1 + 14*x^0
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
14 sept. 2013 à 20:08
Dans ce cas la bonne formule est celle-ci :

coefficient[j]*pow(i, j)
0
jeancrien1121 Messages postés 16 Date d'inscription vendredi 21 juin 2013 Statut Membre Dernière intervention 14 septembre 2013
14 sept. 2013 à 21:08
Parfais! ça fonctionne!
Encore merci KX !! :)
0