Operation sur les polynomes

Fermé
providence Messages postés 98 Date d'inscription dimanche 22 janvier 2006 Statut Membre Dernière intervention 18 novembre 2015 - 16 juil. 2007 à 01:44
 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

15 réponses

sfel Messages postés 1640 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 15 juillet 2009 430
16 juil. 2007 à 09:24
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).
6
providence Messages postés 98 Date d'inscription dimanche 22 janvier 2006 Statut Membre Dernière intervention 18 novembre 2015 7
19 juil. 2007 à 11:26
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
0
sfel Messages postés 1640 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 15 juillet 2009 430
19 juil. 2007 à 20:50
si tu veux, envoi moi ton code (ou une partie), je ferai ca en fonction de ton code.
2
gefix Messages postés 106 Date d'inscription mercredi 9 mai 2007 Statut Membre Dernière intervention 31 août 2010 8
20 juil. 2007 à 18:25
ce serait possible de mettre le code sur le topic ? ca m'interesse ca^^
2
zabbi Messages postés 35 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 23 septembre 2007 4
21 juil. 2007 à 00:01
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 +
2
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
providence Messages postés 98 Date d'inscription dimanche 22 janvier 2006 Statut Membre Dernière intervention 18 novembre 2015 7
21 juil. 2007 à 13:02
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;
}
2
zabbi Messages postés 35 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 23 septembre 2007 4
21 juil. 2007 à 14:15
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();
}
0
zabbi Messages postés 35 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 23 septembre 2007 4
21 juil. 2007 à 21:31
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.?
1
providence Messages postés 98 Date d'inscription dimanche 22 janvier 2006 Statut Membre Dernière intervention 18 novembre 2015 7
22 juil. 2007 à 00:43
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]);
}
}
1
zabbi Messages postés 35 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 23 septembre 2007 4
22 juil. 2007 à 00:57
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é
1
providence Messages postés 98 Date d'inscription dimanche 22 janvier 2006 Statut Membre Dernière intervention 18 novembre 2015 7
22 juil. 2007 à 01:27
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
1
sfel Messages postés 1640 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 15 juillet 2009 430
20 juil. 2007 à 18:54
oui, s'il reviens ^^
0
providence Messages postés 98 Date d'inscription dimanche 22 janvier 2006 Statut Membre Dernière intervention 18 novembre 2015 7
21 juil. 2007 à 19:33
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
0
zabbi Messages postés 35 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 23 septembre 2007 4
22 juil. 2007 à 13:37
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
};
0
providence Messages postés 98 Date d'inscription dimanche 22 janvier 2006 Statut Membre Dernière intervention 18 novembre 2015 7
22 juil. 2007 à 21:27
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, ' ' );
}
}
//
0
zabbi Messages postés 35 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 23 septembre 2007 4
23 juil. 2007 à 02:13
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
0
providence Messages postés 98 Date d'inscription dimanche 22 janvier 2006 Statut Membre Dernière intervention 18 novembre 2015 7
23 juil. 2007 à 11:08
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?
0