Vous êtes sur la page 1sur 3

Programmation impérative et

Langage C
TP fiche 4
Polytech Marseille - INFO – 3ème année
Année 2020-2021

Fonctions
Exercice 1

Ecrivez et testez une fonction qui effectue la décomposition binaire d’un entier et place celle-
ci dans une chaîne de caractères passée en argument. Le prototype de la fonction sera :

void binaire (unsigned int n, char s[]) ;

- La première version produira une chaîne de 32 caractères (0 ou 1).


- La seconde version remplacera les éventuels 0 de gauche (bits les plus significatifs) par
des espaces.
- La troisième version produira une chaîne ne comportant que les chiffres significatifs
(cadrée à gauche).

Exercice 2

Ecrivez et testez une fonction echange qui échange les contenus de deux entiers.

Exercice 3

Ecrivez et testez une fonction itérative double puissance(double x, int n) qui


calcule xn pour tout réel x et tout entier n positif ou nul. Mettez à profit la remarque suivante :

x∙x n-1 si n est impair


x =
n
x2 n/2
si n est pair

Une version récursive sera développée dans un prochain TP.

Exercice 4

Un polynôme de degré n, P x = a0 x n + a1 x n 1 + ⋯ + an 1 x + an , est représenté par un


tableau a[] contenant ses n+1 coefficients. Ecrivez et testez une fonction qui calcule la valeur
du polynôme pour une valeur donnée x. Le prototype de la fonction sera :
double polynome (int n, double a[], double x) ;

Utilisez la décomposition de Horner :

P x = a0 × x + a1 × x + a2 × x! + ⋯ + an 1 " × x + an

Exercice 5

Ecrivez et testez une fonction qui calcule le produit C d’une matrice A ayant nla lignes et nca
colonnes par une matrice B ayant nlb lignes et ncb colonnes. Ces trois matrices seront
représentées par des tableaux de double déclarés avec N lignes et N colonnes, N étant une
constante suffisamment grande. On rappelle que la matrice produit C, ayant nla lignes et ncb
colonnes, est définie par :

nca-1

Ci, j = & Ai, k Bk, j


k=0

Exercice 6

1. Ecrivez et testez une fonction calculant le nombre de combinaisons de p objets parmi n :

p n!
Cn =
p! n − p !

Constatez que les expressions n!, p! et (n−p)! provoquent rapidement des débordements de
capacité.

2. En remarquant que la formule précédente peut se mettre sous la forme :

p n − p + 1 n − p + 2 … n n−p+1 n−p+2 n−p+p


Cn = = …
1 2 … p 1 2 p
p
écrivez et testez une fonction plus réaliste pour le calcul de Cn .

3. Ecrivez et testez une fonction qui, au premier appel garnit un tableau C[N][N] avec les
valeurs des N premières lignes du «triangle du Pascal» (voir ci-dessous), puis à chaque
appel renvoie C[n][p].

1
11
121
1331
14641
1 5 10 10 5 1
4. Le programme précédent nécessite une quantité de mémoire importante. Comment peut-
on en réduire l’encombrement de presque la moitié ?

Vous aimerez peut-être aussi