Téléchargez comme DOCX, PDF, TXT ou lisez en ligne sur Scribd
Télécharger au format docx, pdf ou txt
Vous êtes sur la page 1/ 6
Prof: Elie Hamouche
TD4 : Liste simplement chaine - Polynome
Le but de cet exercice est dimplmenter des oprations sur des polynmes par des listes chanes. On reprsente un ploynme par une liste chane. Chaque cellule de la liste correspond un monme, avec son coefficient et son exposant. Par exemple, sur la figure ci-dessous, on reprsente la liste chane correspondant au polynme 10x^5 + 5x4 - 3x2 + 5.
Figure : liste chainne qui correspondant au polynme
crire une fonction qui prend en paramtre un polynme et rajoute un monme la liste. Le coefficient et lexposant du monme seront passs en paramtre. On supposera que le monme est de degr suprieur au degr du polynme pass en paramtre.
a) crire une fonction de saisie au clavier dun polynme. b) crire une fonction daffichage dun polynme. c) crire une fonction de destruction dun polynme. d) crire une fonction qui recopie un polynme. e) crire une fonction daddition de deux polynmes. f) crire une fonction de multiplication de deux polynmes
int longueur_liste(polynome* p)// pour rechercher la longeur de la liste { polynome* pl =p; int n=0; while(pl!=NULL){ n++; pl=pl->suiv; } return n; } polynome* insertEnQueue(polynome* p,monome m) { polynome *pL,*nouvL; nouvL=(polynome*)malloc(sizeof(polynome)); nouvL->m=m; nouvL->suiv = NULL; if(p==NULL) p=nouvL; else {
for(pL=p;pL->suiv!=NULL;pL=pL->suiv){} pL->suiv=nouvL; } return p; } polynome* saisirPolynome(){ polynome* l; l=(polynome*)malloc(sizeof(polynome)); l=NULL; monome p; int x=0; int n; do { cout<<"donner le degre du polynome\n"; cin>>n; } while (n < 0);
for (int i = n; i >= 0; i--) { cout<<"donner le coeficient de x^"<<i<<" \n"; cin>>x; p.x=x; p.n=i; if (p.x!= 0) l=insertEnQueue(l,p); } return l; }
int checkNode(list<monome> l, monome m) { int res = 0; list<monome> pl= l; monome mn; while (pl.size()>0) { mn=pl.front(); if (mn.n==m.n && mn.x==m.x) { res = 1; break; } pl.pop_front(); } return res; } list<monome> del_0(list<monome> l) { monome m ; m.x = 0; list<monome> pl; for (int c = l.size()-1;c>=0;c--) { m.n = c; if(!checkNode(l,m)){ pl.push_back(l.front()); l.pop_front(); } } return pl; }
}; int main(){ ex2 o; polynome * p1; polynome * p2; polynome * p3; p1=o.saisirPolynome(); o.afficherPolynome(p1); p2=o.saisirPolynome(); o.afficherPolynome(p2); p3=o.additionPoly(p1,p2); cout<<"l'addition de ses deux polynomes est : "<<endl; o.afficherPolynome(p3); cout<<"la multiplication de ses deux polynomes est : "<<endl; p3=o.multiplicationPoly(p1,p2); o.afficherPolynome(p3); system("pause"); return 0; }