Operation sur les polynomes [Fermé]

Messages postés
98
Date d'inscription
dimanche 22 janvier 2006
Statut
Membre
Dernière intervention
18 novembre 2015
- - Dernière réponse :  manal - 18 janv. 2011 à 11:43
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
Afficher la suite 

15 réponses

Meilleure réponse
Messages postés
1646
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
15 juillet 2009
401
6
Merci
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).

Dire « Merci » 6

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 59736 internautes nous ont dit merci ce mois-ci

providence
Messages postés
98
Date d'inscription
dimanche 22 janvier 2006
Statut
Membre
Dernière intervention
18 novembre 2015
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
Messages postés
1646
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
15 juillet 2009
401
2
Merci
si tu veux, envoi moi ton code (ou une partie), je ferai ca en fonction de ton code.
Messages postés
106
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
31 août 2010
8
2
Merci
ce serait possible de mettre le code sur le topic ? ca m'interesse ca^^
Messages postés
37
Date d'inscription
mercredi 16 mai 2007
Statut
Membre
Dernière intervention
23 septembre 2007
4
2
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 +
j'en ais vraiment besion *pouvez vs me le rendre service mercii bcp d'avance voila mon e mail Adresse supprimée Modération CCM
Messages postés
98
Date d'inscription
dimanche 22 janvier 2006
Statut
Membre
Dernière intervention
18 novembre 2015
7
2
Merci
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;
}
zabbi
Messages postés
37
Date d'inscription
mercredi 16 mai 2007
Statut
Membre
Dernière intervention
23 septembre 2007
4 -
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();
}
Messages postés
37
Date d'inscription
mercredi 16 mai 2007
Statut
Membre
Dernière intervention
23 septembre 2007
4
1
Merci
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.?
Messages postés
98
Date d'inscription
dimanche 22 janvier 2006
Statut
Membre
Dernière intervention
18 novembre 2015
7
1
Merci
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]);
}
}
Messages postés
37
Date d'inscription
mercredi 16 mai 2007
Statut
Membre
Dernière intervention
23 septembre 2007
4
1
Merci
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é
Messages postés
98
Date d'inscription
dimanche 22 janvier 2006
Statut
Membre
Dernière intervention
18 novembre 2015
7
1
Merci
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
Messages postés
1646
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
15 juillet 2009
401
0
Merci
oui, s'il reviens ^^
Messages postés
98
Date d'inscription
dimanche 22 janvier 2006
Statut
Membre
Dernière intervention
18 novembre 2015
7
0
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
Messages postés
37
Date d'inscription
mercredi 16 mai 2007
Statut
Membre
Dernière intervention
23 septembre 2007
4
0
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
};
Messages postés
98
Date d'inscription
dimanche 22 janvier 2006
Statut
Membre
Dernière intervention
18 novembre 2015
7
0
Merci
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, ' ' );
}
}
//
Messages postés
37
Date d'inscription
mercredi 16 mai 2007
Statut
Membre
Dernière intervention
23 septembre 2007
4
0
Merci
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
Messages postés
98
Date d'inscription
dimanche 22 janvier 2006
Statut
Membre
Dernière intervention
18 novembre 2015
7
0
Merci
bonsoir ZABBi,
ton programme j'en aurai surement besoin(je te prie de bien vouloir me le poster lorsque mon probleme sera resolu) mais pour l'heure je souhaite bien qu'on poursuive ma demarche.
Que me propose-tu donc pour l'affichage des pages?