Petit soucis calcule de polynome
Résolu
jeancrien1121
Messages postés
16
Date d'inscription
Statut
Membre
Dernière intervention
-
jeancrien1121 Messages postés 16 Date d'inscription Statut Membre Dernière intervention -
jeancrien1121 Messages postés 16 Date d'inscription Statut Membre Dernière intervention -
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 ;)
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 ;)
A voir également:
- Petit soucis calcule de polynome
- Trier du plus petit au plus grand excel - Guide
- Petit 3 ✓ - Forum Word
- Petit 2 ✓ - Forum Windows
- Petit 9 - Forum Mail
- Comment imprimer une photo en petit ✓ - Forum Photo numérique
2 réponses
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 !
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 !
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 : /
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 : /
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)
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)
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
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