Operation sur les polynomes
providence
Messages postés
99
Statut
Membre
-
manal -
manal -
bonsoir a tous;
Debutant en C je souhaiterais ecrire un programme qui execute les operations courantes sur les polynômes:
1. saisir les coefficients d’un polynôme
2. afficher un polynôme comme suit : P(x) = 5x^3 +2x^2-3x +8
3. dérivé d’un polynôme
4. primitive d’un polynôme
5. somme de deux polynômes
6. soustraction de deux polynômes
7. produit de deux polynômes
8. division de deux polynômes
9. valeur d’un polynôme on utilisera le schéma de Horner
pour les operations de 1 à 6 j'ai des esquisses de solution mais j'avoue avoir beaucoup de difficultés avec le produit ,la division et le schema de horner
Une aide me serait d'une très grande utilité.
Merci infiniment
NB:deg polynome = N
Debutant en C je souhaiterais ecrire un programme qui execute les operations courantes sur les polynômes:
1. saisir les coefficients d’un polynôme
2. afficher un polynôme comme suit : P(x) = 5x^3 +2x^2-3x +8
3. dérivé d’un polynôme
4. primitive d’un polynôme
5. somme de deux polynômes
6. soustraction de deux polynômes
7. produit de deux polynômes
8. division de deux polynômes
9. valeur d’un polynôme on utilisera le schéma de Horner
pour les operations de 1 à 6 j'ai des esquisses de solution mais j'avoue avoir beaucoup de difficultés avec le produit ,la division et le schema de horner
Une aide me serait d'une très grande utilité.
Merci infiniment
NB:deg polynome = N
A voir également:
- Operation sur les polynomes
- Le fichier de pagination est insuffisant pour terminer cette opération ✓ - Forum Logiciels
- Impossible de terminer l'opération car le fichier contient un virus ✓ - Forum Virus
- Impossible d'effectuer l'opération le message ayant été modifié ✓ - Forum Outlook
- Erreur lors d'une opération de pagination ✓ - Forum Matériel & Système
- Votre solde est insuffisant pour effectuer cette operation. veuillez recharger votre compte. - Forum Illustrator
15 réponses
ba, commence si tu veux ton programme, je te le corrigerais.
le C je connais, et les polynomes aussi (le bac S, spé maths ca aide ^^)
je te conseillerais de faire un menu
alors deux choix :
-soit tu connais les fonctions et procédures, et dans quel cas, ba un switch qui envoi vers la ou les fonctions appropriés.
-soit tu ne connais pas les fonctions et procédures, où dans quel cas tu peux d'abord faire un switch avec dans chaque cas le calcul et l'affichage du résultat, et après pourrais te le faire modifier en fonctions et procédures (si tu veux).
le C je connais, et les polynomes aussi (le bac S, spé maths ca aide ^^)
je te conseillerais de faire un menu
alors deux choix :
-soit tu connais les fonctions et procédures, et dans quel cas, ba un switch qui envoi vers la ou les fonctions appropriés.
-soit tu ne connais pas les fonctions et procédures, où dans quel cas tu peux d'abord faire un switch avec dans chaque cas le calcul et l'affichage du résultat, et après pourrais te le faire modifier en fonctions et procédures (si tu veux).
providence
Messages postés
99
Statut
Membre
7
Merci sfel pour ta reponse .Les procedures g connais et j'ai opté pour le menu mais je souhaiterais juste avoir la procedure/fonction pour le produit et la division de polynome avec eventuellement les explcations car je calle un peu la dessus.Merci
bsr.
ce programme la est parmi les programmes classiques pour comprendre les listes chainés.
alors personnelement pour rendre ton programme facile pense à utiliser les listes chainés.
peut etre je pourrais t'envoyer un programme qui fait ssa.
a +
ce programme la est parmi les programmes classiques pour comprendre les listes chainés.
alors personnelement pour rendre ton programme facile pense à utiliser les listes chainés.
peut etre je pourrais t'envoyer un programme qui fait ssa.
a +
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ci dessous les fonctions que j'ai dejà concocté.Merci de m'aider a apporter les ameliorations necessaires
#include <stdio.h>
#include <math.h>
///////////////////////////////////////////////////////////////////////////
//Programme Principal
//
/////////////////////////////////////////////////
int main() {
}
////////////////////////////////////////////////////////////////////////
// definition d'un polynome sous forme d'une structure contenant deux parametres: le degree et un tableau contenant
// les coefficients
//////////////////////////////////////////////////////////
struct poly {
degree = deg; //degree du tableau
donnee = new double[degree]; //coefficients du polynome
};
poly addition (poly p1, poly p2)
{
int i, n = p2.degree;
struct poly ans = initPoly(n); //ans polynome de meme degree que p2
if (p1.degree == p2.degree)
{
for (i=0; i<n; i++) //additione les coefficients
ans.donnee[i] = p1.donnee[i] + p2.donnee[i];
}
else if (p2.degree > p1.degree)
{
for (i=0; i<p1.degree; i++)
ans.donnee[i] = p1.donnee[i] + p2.donnee[i];
for (i=p1.degree; i<n; i++)
ans.donnee[i] = p2.donnee[i];
return ans;
}
else if (p2.degree < p1.degree)
{
for (i=0; i<n; i++)
ans.donnee[i] = p1.donnee[i] + p2.donnee[i];
for (i=n; i<p1.degree; i++)
ans.donnee[i] = p1.donnee[i];
}
return ans;
}
#include <stdio.h>
#include <math.h>
///////////////////////////////////////////////////////////////////////////
//Programme Principal
//
/////////////////////////////////////////////////
int main() {
}
////////////////////////////////////////////////////////////////////////
// definition d'un polynome sous forme d'une structure contenant deux parametres: le degree et un tableau contenant
// les coefficients
//////////////////////////////////////////////////////////
struct poly {
degree = deg; //degree du tableau
donnee = new double[degree]; //coefficients du polynome
};
poly addition (poly p1, poly p2)
{
int i, n = p2.degree;
struct poly ans = initPoly(n); //ans polynome de meme degree que p2
if (p1.degree == p2.degree)
{
for (i=0; i<n; i++) //additione les coefficients
ans.donnee[i] = p1.donnee[i] + p2.donnee[i];
}
else if (p2.degree > p1.degree)
{
for (i=0; i<p1.degree; i++)
ans.donnee[i] = p1.donnee[i] + p2.donnee[i];
for (i=p1.degree; i<n; i++)
ans.donnee[i] = p2.donnee[i];
return ans;
}
else if (p2.degree < p1.degree)
{
for (i=0; i<n; i++)
ans.donnee[i] = p1.donnee[i] + p2.donnee[i];
for (i=n; i<p1.degree; i++)
ans.donnee[i] = p1.donnee[i];
}
return ans;
}
slt.
c'est une version que j'ai essayé de taper maintenat il fait la lecture et aussi l'affichage
la somme des coefficient le donne vrai , mais il y'a une faute au nivaeu des degré.
j'ai essayé de respecter ton demarche.
je te le donne ,je suis trés occuppé ce soir peut etre je vais voir avec toi ton programme .
a+
#include <stdio.h>
#include <math.h>
#include<malloc.h>
#include<conio.h>
struct poly {
int degree ;//degree du tableau
float donnee[20]; //coefficients du polynome
};
poly addition (poly p1, poly p2)
{
int i, n = p2.degree;
poly ans; //ans polynome de meme degree que p2
if (p1.degree == p2.degree)
{
for (i=0; i<n; i++) //additione les coefficients
ans.donnee[i] = p1.donnee[i] + p2.donnee[i];
}
else if (p2.degree > p1.degree)
{
for (i=0; i<p1.degree; i++)
ans.donnee[i] = p1.donnee[i] + p2.donnee[i];
for (i=p1.degree; i<n; i++)
ans.donnee[i] = p2.donnee[i];
return ans;
}
else if (p2.degree < p1.degree)
{
for (i=0; i<n; i++)
ans.donnee[i] = p1.donnee[i] + p2.donnee[i];
for (i=n; i<p1.degree; i++)
ans.donnee[i] = p1.donnee[i];
}
return ans;
}
///////////////////////////////////////////////////////////////////////////
//Programme Principal
//
/////////////////////////////////////////////////
int main() {
////////////////////////////////////////////////////////////////////////
// definition d'un polynome sous forme d'une structure contenant deux parametres: le degree et un tableau contenant
// les coefficients
//////////////////////////////////////////////////////////
int m,i,n;
poly p1,p2;
//poly p1 = (struct )malloc(sizeof(struct poly));
printf("donner les nombre de cofficient de p1 \n");
scanf("%d",&m);
for(i=0;i<m;i++)
{ printf("donner le coeficient %d \n",i);
scanf("%f",&p1.donnee[i]);
printf("donner le degré de ce coeficient %d \n",i+1);
scanf("%d",&p1.degree);
}
printf("donner les nombre de cofficient de p2 \n");
scanf("%d",&n);
for(i=0;i<n;i++)
{ printf("donner le coeficient %d \n",i+1);
scanf("%f",&p2.donnee[i]);
printf("donner le degré de ce coeficient %d \n",i+1);
scanf("%d",&p2.degree);
}
poly somme=addition(p1,p2);
if(m<n)
{
for(i=0;i<n;i++)
printf("%f x^%d +",somme.donnee[i],somme.degree);}
else {
for(i=0;i<m;i++)
printf("%f x^%d +",somme.donnee[i],somme.degree);}
getch();
}
c'est une version que j'ai essayé de taper maintenat il fait la lecture et aussi l'affichage
la somme des coefficient le donne vrai , mais il y'a une faute au nivaeu des degré.
j'ai essayé de respecter ton demarche.
je te le donne ,je suis trés occuppé ce soir peut etre je vais voir avec toi ton programme .
a+
#include <stdio.h>
#include <math.h>
#include<malloc.h>
#include<conio.h>
struct poly {
int degree ;//degree du tableau
float donnee[20]; //coefficients du polynome
};
poly addition (poly p1, poly p2)
{
int i, n = p2.degree;
poly ans; //ans polynome de meme degree que p2
if (p1.degree == p2.degree)
{
for (i=0; i<n; i++) //additione les coefficients
ans.donnee[i] = p1.donnee[i] + p2.donnee[i];
}
else if (p2.degree > p1.degree)
{
for (i=0; i<p1.degree; i++)
ans.donnee[i] = p1.donnee[i] + p2.donnee[i];
for (i=p1.degree; i<n; i++)
ans.donnee[i] = p2.donnee[i];
return ans;
}
else if (p2.degree < p1.degree)
{
for (i=0; i<n; i++)
ans.donnee[i] = p1.donnee[i] + p2.donnee[i];
for (i=n; i<p1.degree; i++)
ans.donnee[i] = p1.donnee[i];
}
return ans;
}
///////////////////////////////////////////////////////////////////////////
//Programme Principal
//
/////////////////////////////////////////////////
int main() {
////////////////////////////////////////////////////////////////////////
// definition d'un polynome sous forme d'une structure contenant deux parametres: le degree et un tableau contenant
// les coefficients
//////////////////////////////////////////////////////////
int m,i,n;
poly p1,p2;
//poly p1 = (struct )malloc(sizeof(struct poly));
printf("donner les nombre de cofficient de p1 \n");
scanf("%d",&m);
for(i=0;i<m;i++)
{ printf("donner le coeficient %d \n",i);
scanf("%f",&p1.donnee[i]);
printf("donner le degré de ce coeficient %d \n",i+1);
scanf("%d",&p1.degree);
}
printf("donner les nombre de cofficient de p2 \n");
scanf("%d",&n);
for(i=0;i<n;i++)
{ printf("donner le coeficient %d \n",i+1);
scanf("%f",&p2.donnee[i]);
printf("donner le degré de ce coeficient %d \n",i+1);
scanf("%d",&p2.degree);
}
poly somme=addition(p1,p2);
if(m<n)
{
for(i=0;i<n;i++)
printf("%f x^%d +",somme.donnee[i],somme.degree);}
else {
for(i=0;i<m;i++)
printf("%f x^%d +",somme.donnee[i],somme.degree);}
getch();
}
slt . il n'yaura pas de pb car on fait l'addition.
seulemnet lors de l'affichage qu'il faut tester s'il ya un coefficient null.
que dis c je t'envoie ce soir la multiplication et l'addition ,et un menu pour choisir l'operation voulu et à toi de programmer les autres operations.?
seulemnet lors de l'affichage qu'il faut tester s'il ya un coefficient null.
que dis c je t'envoie ce soir la multiplication et l'addition ,et un menu pour choisir l'operation voulu et à toi de programmer les autres operations.?
ZaBBi,
Ne serait t-il pas interessant d'utiliser une procedure pour la saisie des polynomes.je te poste une esquisse de ce que j'ai dejà realisé.Merci d'y jetter un oeil:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct poly {
int deg; //degree du tableau
float coef; //coefficients du polynome
};
poly Saisie_poly(int deg) /* fonction permettant la saisie d'un polynome */
{
int i;
struct poly poly_saisie;
for (i = 0; i < deg; i++)
{
printf('entrez svp le coefficient de X^' ,i);
scanf("%f", &poly_saisie.coef[i]);
}
}
Ne serait t-il pas interessant d'utiliser une procedure pour la saisie des polynomes.je te poste une esquisse de ce que j'ai dejà realisé.Merci d'y jetter un oeil:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct poly {
int deg; //degree du tableau
float coef; //coefficients du polynome
};
poly Saisie_poly(int deg) /* fonction permettant la saisie d'un polynome */
{
int i;
struct poly poly_saisie;
for (i = 0; i < deg; i++)
{
printf('entrez svp le coefficient de X^' ,i);
scanf("%f", &poly_saisie.coef[i]);
}
}
bsr.
j'ai oublié de te dire que dans ton programme tu oublie de preciser le degré de la somme c'est à dire
ans.deg=?
pour les corrections de ta fonction saisie:
#include <stdio.h>
#include <stdlib.h>//pas besoin de cette bibliotheque
#include <string.h> // pas besoin de cette bibliotheqe: on l'utilise dans le cas pour fonction puts, gets ...
struct poly {
int deg; //degree du tableau
float coef[10]; //coefficients du polynome , ci ta un tableau donc tu reserve par exp 10 cases
};
poly Saisie_poly(int deg) /* fonction permettant la saisie d'un polynome */
{
int i;
struct poly poly_saisie;
for (i = 0; i < deg+1; i++) //pour degré =n on a n+1 coeficients
{
printf('entrez svp le coefficient de X^%d ,i);
scanf("%f", &poly_saisie.coef[i]);
}
}
c ce que j'ai remarqué
j'ai oublié de te dire que dans ton programme tu oublie de preciser le degré de la somme c'est à dire
ans.deg=?
pour les corrections de ta fonction saisie:
#include <stdio.h>
#include <stdlib.h>//pas besoin de cette bibliotheque
#include <string.h> // pas besoin de cette bibliotheqe: on l'utilise dans le cas pour fonction puts, gets ...
struct poly {
int deg; //degree du tableau
float coef[10]; //coefficients du polynome , ci ta un tableau donc tu reserve par exp 10 cases
};
poly Saisie_poly(int deg) /* fonction permettant la saisie d'un polynome */
{
int i;
struct poly poly_saisie;
for (i = 0; i < deg+1; i++) //pour degré =n on a n+1 coeficients
{
printf('entrez svp le coefficient de X^%d ,i);
scanf("%f", &poly_saisie.coef[i]);
}
}
c ce que j'ai remarqué
Zabbi,
Dans l'enoncé , il y a 1 contrainte: il y a marqué:N est une constante fixée suffisament grand(degre <=N). cette contrainte ne poserait-elle pas probleme avec :float coef[10]?merci
Dans l'enoncé , il y a 1 contrainte: il y a marqué:N est une constante fixée suffisament grand(degre <=N). cette contrainte ne poserait-elle pas probleme avec :float coef[10]?merci
merci zabbi pour ta reponse mais g 1 preoccupation concernant la fonction addition.que se passe t il si les polynomes sont de même degré avec des coéfficients qui s'annulent? as-tu pensé à gerer ce cas? merci
slt.
tu peux fiare comme ssa
#include <stdio.h>
#Define N 25 //par exemple ainsi dés que le compilateur trouve N il met 25 à sa place
main()
{
struct poly {
int deg; //degree du tableau
float coef[N]; //coefficients du polynome , ci ta un tableau donc tu reserve par exp 10 cases
};
tu peux fiare comme ssa
#include <stdio.h>
#Define N 25 //par exemple ainsi dés que le compilateur trouve N il met 25 à sa place
main()
{
struct poly {
int deg; //degree du tableau
float coef[N]; //coefficients du polynome , ci ta un tableau donc tu reserve par exp 10 cases
};
Zabbi je te remerci encore une fois pour ton aide qui m'est très precieuse.je t'envois la procedure d'affichage de page que j'ai conçu(en fait j'ai vue un exemple sur le net et je l'ai adapté à mon programme).Verifie la minutieusement sTP et donne moi ton avis.Si t'en a une autre + efficace n'hesite pas à me la faire parvenir.Merci encore pour tout;
void Affichage_poly(poly P) // procedure permettant d'afficher un polynome
{
int i;
struct poly ans;
ans=clean(p);// clean est une procedure permettant de reduire la taill du poly en d coef=0
if (checkZero(ans)==1)// checkZero verifi si le poly est nul(deg = 1 et coef=0)
printf(0);
if (ans.donnee[donnee.degree-1]!=0) /* dans l'exemple que j'ai vu g ne comprends pas bien l'instruction donnee.degree-1.pourrais-tu m'en dire + la dessus STP?*/
printf(donnee[donnee.degree-1]);
if (ans.degree>1)
printf('x^',ans.degree-1, " " );
for (i=ans.degree-2; i>=0; i--)
{
if (ans.donnee[i]!=0)
{
if (ans.donnee[i]>0)
printf('+');
printf('ans.donnee[i]);
if (i!=0)
printf('x^' , i, ' ' );
}
}
//
void Affichage_poly(poly P) // procedure permettant d'afficher un polynome
{
int i;
struct poly ans;
ans=clean(p);// clean est une procedure permettant de reduire la taill du poly en d coef=0
if (checkZero(ans)==1)// checkZero verifi si le poly est nul(deg = 1 et coef=0)
printf(0);
if (ans.donnee[donnee.degree-1]!=0) /* dans l'exemple que j'ai vu g ne comprends pas bien l'instruction donnee.degree-1.pourrais-tu m'en dire + la dessus STP?*/
printf(donnee[donnee.degree-1]);
if (ans.degree>1)
printf('x^',ans.degree-1, " " );
for (i=ans.degree-2; i>=0; i--)
{
if (ans.donnee[i]!=0)
{
if (ans.donnee[i]>0)
printf('+');
printf('ans.donnee[i]);
if (i!=0)
printf('x^' , i, ' ' );
}
}
//
slt.
je vois qu'il ya bcp des erreurs au niveau ni de logic ni de syntaxe
d'abordpor la question sur :
donnee.degree-1
d'abord on teste par la fonction chekzero est ce queans est nulle
aprés on essaie de voir c le degré =1 mais la syntaxe est fausse car on doit ecrire:
if((ans.donnee[degree])-1!=0) pas donnee.deg -1
je vois aussi que ta fonction affiche seulemnt le coef et n'affiche pas les degrés.
moi j'ai une version avec les listes chainés qui fait tous ce que vous avez demandé mais moi je prefere suivre avec toi ton programme alors c tu veux que je t'envois ce programme ou continuer avec toi ta demarche. bonne nuit
je vois qu'il ya bcp des erreurs au niveau ni de logic ni de syntaxe
d'abordpor la question sur :
donnee.degree-1
d'abord on teste par la fonction chekzero est ce queans est nulle
aprés on essaie de voir c le degré =1 mais la syntaxe est fausse car on doit ecrire:
if((ans.donnee[degree])-1!=0) pas donnee.deg -1
je vois aussi que ta fonction affiche seulemnt le coef et n'affiche pas les degrés.
moi j'ai une version avec les listes chainés qui fait tous ce que vous avez demandé mais moi je prefere suivre avec toi ton programme alors c tu veux que je t'envois ce programme ou continuer avec toi ta demarche. bonne nuit