Vous êtes sur la page 1sur 3

L2 mention Sciences du Vivant Universit e Louis Pasteur

Programmation 3 2007/08

Sujet de Projet
Ce projet est a ` r ealiser seul (toutes similitudes suspectes ne passeront pas inaper cues). A rendre le 14 d ecembre lors de la s eance de TP.

Exercice 1
1. Ecrire une fonction de prol unsigned char premier(unsigned int i) ; qui indique si un entier positif est premier (renvoyer 1) ou non (renvoyer 0). 2. Ecrire une fonction de prol unsigned char premiersInf(unsigned int n) ; qui ache tous les nombres premiers inf erieurs ` a un entier n donn e.

Exercice 2

Contexte Une fonction polynomiale f : R R (ou plus simplement un polyn ome) ` a coecients dans R peut se d enir par :
n

f (x) =
k=0

ak .xk = an .xn + an1 .xn1 + . . . + a1 .x1 + a0 .x0 ,

o` u ak R pour k = 0 ` a n, et an = 0. Le degr e du polyn ome est alors n. On peut tr` es simplement mod eliser de tels polyn omes comme des tableaux de r eels. Un polyn ome de degr e n est alors vu comme un tableau de n + 1 r eels, le k -` eme r eel du tableau correspondant au coecient ak du polyn ome. Dans ce qui suit, on sint eresse aux polyn omes de degr e 10. De tels polyn omes peuvent tous etre mod elis es gr ace au type double [11]. Exemple : le polyn ome p d eni par p(x) = 2.x4 + 4, 35.x3 5.x + 1.456 peut etre mod elis e par le tableau float p[11] d eni par p[0] = 1.456, p[1] = -5.0, p[2] = 0.0, p[3] = 4.35, p[4] = 2.0 et p[5] ` a p[10] = 0.0. Questions En se r ef erant au squelette de programme fourni, ecrire des fonctions : de saisie dun polyn ome au clavier ; de calcul du degr e dun polyn ome ; dachage dun polyn ome ; d evaluation de la valeur dun polyn ome en un point (remplacer x par une valeur num erique) ; n de d erivation dun polyn ome (rappel : le polyn ome d eriv e de k=0 ak xk n k 1 est k=1 ak .k.x ); 1

de calcul dune primitive dun polyn ome de degr e < 10 (rappel : une n n primitive de k=0 ak xk est k=0 ak /(k + 1).xk+1 ) ; b n de calcul de lint egrale dun polyn ome entre deux bornes ( a k=0 ak .xk dx) (rappel : lint egrale du polyn ome entre deux bornes a et b est egale ` a la di erence de l evaluation de la primitive du polyn ome en a et en b) ; n de calcul de la somme de deux polyn omes (rappel : la somme de k=0 ak .xk n n k k et k=0 bk .x est k=0 (ak + bk ).x ). Squelette du programme #include <stdio.h> #define MAX 11 void saisie(float p[MAX]) /* fonction de saisie au clavier du polynome p */ { ... } unsigned int degre(float p[MAX]) /* fonction renvoyant le degre du polynome p */ { ... } void affiche(float p[MAX]) /* fonction daffichage du polynome p */ { ... } float eval(float p[MAX], float x) /* fonction renvoyant la valeur du polynome p au point x */ { ... } void deriv(float p[MAX], float r[MAX]) /* fonction calculant le polynome derive r du polynome p */ { ... } void prim(float p[MAX], float r[MAX]) /* fonction calculant un polynome primitive r du polynome p */ { ... }

float integrale(float p[MAX], float xmin, float xmax) /* fonction renvoyant la valeur de lintegrale de p entre les bornes xmin et xmax */ { ... } void somme(float p1[MAX], float p2[MAX], float r[MAX]) /* fonction calculant le polynome r somme des polynomes p1 et p2 */ { ... } int main() { ... }