Ecole Polytechnique de
Tunisie
Réalisé par :
Chiheb BEN HAMMOUDA
A.U : 2010-2011
1
Ecole Polytechnique de Tunisie 2010/2011
#include<conio.h>
#include<stdio.h>
#include<malloc.h>
#include<math.h>
struct noeud{
float x;
int e;
struct noeud * suivant;};
typedef struct noeud listep;
typedef listep* liste;
Fonction lecture:
2
Ecole Polytechnique de Tunisie 2010/2011
p=adjq(a,i,p);
printf("\n voulez vous ajouter autre coefficients: tapez 1 si oui,0 si non :
");
scanf("%d",&b);
} while(b);
return p;}
Fonction d’affichage:
void affiche(liste p)
{liste courant=p;
while (courant->suivant!=NULL)
{
printf("%f*x^%d+",courant->x,courant->e);
courant=courant->suivant;}
printf("%f*x^%d",courant->x,courant->e);
}
Fonction qui calcule l'image d'un réel:
double valeur(liste p,float x)
{liste courant=p;
float s=0;
float y;
while (courant)
{y=courant->e;
s=s+(courant->x)*pow(x,y);
courant=courant->suivant;}
return s;}
Fonction qui calcule le degré d’un polynôme :
int degre(liste p)
{liste courant=p;
int n;
n=courant->e;
while (courant)
{if (n<courant->e)
n=courtant->e;
courant=courant->suivant;}
return n;
}
typedef struct
{float x;
int e;
}monome;
3
Ecole Polytechnique de Tunisie 2010/2011
4
Ecole Polytechnique de Tunisie 2010/2011
affiche(polynome);
printf("\n le degre de ce polynome est: %d.",degre(po));
printf("\n entrer un reel : ");
scanf("%f",&b);
printf("\n la valeur de p pour ce reel est: %f",valeur(po,b));
printf("\n entrer un monome: \n l'exposant: ");
scanf("%d",&d.e);
printf("\n le coefficient: ");
scanf("%f",&m.x);
p1=foisx(polynome,m);
printf("\n le produit entre p et le monome est\n P1= ");
affiche(p1);
printf("\n entrer un nouveau polynome p2:\n ");
p2=lecture();
printf("\n la polynome p2 est:\n P2=");
affiche(p2);
printf("\n la somme entre les polynome P2 et P est:\n P3= ");
p3=somme(polynome,p2);
affiche(p3);
liste p4=derive(p);
printf("\n le polynome est\n");
affiche(p);
printf("\n le polynome derivé de P est: \nP4=");
affiche(p4);
getch();
}
int longueur(liste p)
{liste courant=p;
int i=0;
while(courant)
{i++;
courant=courant->suivant;
}
return i;
}
Fonction qui permet de diviser une liste :
void deviser(liste p,liste*lg,liste*ld)
{
5
Ecole Polytechnique de Tunisie 2010/2011
liste po=p;
int i=longue(p);
int k,b;
float a;
for(k=1;k<=i/2;k++)
{b=po->e;
a=po->x;
(*lg)=adjq(a,b,(*lg));
po=po->suivant;
}
for (k=(i/2)+1;k<=i;k++)
{a=po->x;
b=po->e;
(*ld)=adjq(a,b,(*ld));
po=po->suivant;
}
Fonction qui permet de fusionner deux listes triées :
liste fusion(liste first,liste second)
{liste p=first;
liste q=second;
liste l,lead;
if(p->expo>q->expo){l=p;
p=p->suivant;
l->suivant=q;
}
else{l=q;
q=q->suivant;
l->suivant=p;
};
lead=l;
while(p&&q){if(p->expo>q->expo){l->suivant=p;
p=p->suivant;
l=l->suivant;
l->suivant=q;
}
else{l->suivant=q;
q=q->suivant;
l=l->suivant;
l->suivant=p;
}
}
return(lead);
}
6
Ecole Polytechnique de Tunisie 2010/2011
return(first);
}