Vous êtes sur la page 1sur 3

Université Paris 13 Éléments d’informatique

Institut Galilée PC-SPI


Licence 1 - 1er semestre

Travaux pratiques 7 et 8 : Révision, exercice noté

1 La suite de Fibonacci (TD4)


La suite de Fibonacci est une suite d’entiers telle que :
1. les deux premiers termes de la suite sont 1 et 1 ;
2. chaque terme suivant est la somme des deux termes qui le précèdent.
Tout nombre de cette suite est dit un nombre de Fibonacci. Le premier nombre de
Fibonacci est donc 1, le deuxième est 1, le troisième est 1 + 1 = 2, le quatrième est
2 + 1 = 3, etc. Voici ci après un tableau avec les premiers dix nombres de Fibonacci.

rang 1 2 3 4 5 6 7 8 9 10
somme 1 1 1 + 1 2 + 1 3 + 2 5 + 3 8 + 5 13 + 8 21 + 13 44 + 21
nombre F ib. 1 1 2 3 5 8 13 21 44 65

Écrire un programme qui affiche les 20 premiers nombres de Fibonacci.

1.1 Variations
1. Modifiez le programme de manière à ce que la longueur N de la séquence de
Fibonacci à afficher soit demandée à l’utilisateur.
2. À la place d’afficher le premiers N nombres de Fibonacci, afficher les nombres de
Fibonacci plus inférieurs à N .
3. Écrire la fonction int fibonacci(int n) qui calcule le n-ème nombre de Fibo-
nacci et récrire les programmes précédents en utilisant cette fonction.

2 Test de primalité et facteurs premiers (TD5 et TP5)


1. Test de primalité. Écrire un programme qui demande à l’utilisateur d’entrer
un nombre entier positif n, teste si n est premier puis affiche le résultat.
2. Facteurs. Écrire un programme qui demande à l’utilisateur d’entrer un nombre
entier positif n et affiche tous ses facteurs (partir du test de primalité de l’exercice
précédent).
3. Facteurs communs. Écrire un programme qui demande à l’utilisateur deux
nombres entiers positifs n et m et affiche tous leurs facteurs communs.
4. Décomposition en facteurs premiers. Écrire un programme qui, après avoir
demandé à l’utilisateur d’entrer un nombre entier positif n et avoir initialisé une
variable i à 2 et une variable m à n, exécute la boucle suivante :
tant que i ∗ i ≤ m

1
— si i est un diviseur de m, alors m prend la valeur m/i ;
— sinon, i est incrémenté de 1.
Après avoir écrit le programme, essayez-le sur quelques valeurs. Que pouvez-vous
remarquer ?

2.1 Variations
1. Écrire une fonction int est_premier(int n) qui renvoie at TRUE si n est premier
ou FALSE sinon.
2. Écrire une fonction int sont_copremiers(int n, int m) qui renvoie TRUE si
n et m sont premiers entre eux (ou copremiers) ou FALSE sinon. On rappelle que
deux nombres sont premiers entre eux s’ils n’ont pas de facteurs communs.
3. Écrire un programme qui demande à l’utilisateur le numérateur n et le dénomi-
nateur d d’une fraction et affiche le numérateur et le dénominateur de la fraction
irréductible équivalente.

3 Entrainement exercice noté : tableaux (TD6 et TD8)


3.1 Affichage des éléments d’un tableau
Écrire un programme qui :
— déclare et initialise le tableau de variables entières : 5,2,4,3,0
— pour chaque case du tableau :
— affiche la case

3.2 Calcul de la somme des éléments d’un tableau


Soit un tableau d’entiers, initialisé à une taille et des valeurs quelconques. Écrire
un programme qui calcule et affiche à l’écran la somme des éléments du tableau.

3.3 Lecture d’une série et calcul de la moyenne


Écrire un programme qui :
1. stocke dans un tableau une série de réels positifs entrés par l’utilisateur (NB :
pour arrêter la lecture des réels, l’utilisateur entre la valeur -1) ;
2. calcule et affiche la moyenne des valeurs de la série.
Attention : la taille du tableau utilisé pour la mémorisation de la série doit être définie
au moment de la déclaration du tableau. Utiliser une constante NBMAX pour cela. Cette
valeur sera donc la longueur maximale de la série que l’utilisateur peut fournir.

3.4 Variations
1. Écrire une fonction void affiche_tableau(double tab[TAILLE],int nElem)
qui affiche les premiers nElem cases d’un tableau de taille TAILLE.
NB. TAILLE est une constante définie dans le programme qui utilise la fonction.
Si nElem > TAILLE la fonction affiche tous les éléments du tableau ; si nElem < 0,
la fonction termine sans afficher aucune valeur).
2. Écrire une fonction int lire_tableau(double tab[TAILLE]) qui lit une série
de réels positifs entrés par l’utilisateur terminée par la valeur -1 (c’est-à-dire, -1
marque la fin de la série de valeurs à lire). La fonction renvoie le nombre nElem
de valeurs lus et stocke ces valeurs dans les premiers nElem cases d’un tableau

2
de taille TAILLE. La lecture s’arrêtera aussi après avoir lu TAILLE valeurs sans
rencontrer la valeur -1.
NB. TAILLE est une constante définie dans le programme qui utilise la fonction.
3. Écrire une fonction double somme(double tab[TAILLE], int nElem) qui cal-
cule la somme des premiers nElem éléments d’un tableau de réels de taille TAILLE.
NB. TAILLE est une constante définie dans le programme qui utilise la fonction.
Si nElem > TAILLE la fonction renvoie la moyenne des éléments du tableau ; si
nElem < 0, la fonction renvoie 0) .

4 * Exercice noté (durée : 45 minutes)


Récupérez l’énoncé de l’exercice noté sur l’ENT.
Remarques :
— La notation tiendra compte de l’indentation, des commentaires, de la compilation
et de la réponse au problème.
— Si vous êtes en binôme, indiquez-le en commentaire dans le code.
— Vous déposerez sur l’ENT le fichier source (fichier .c)
ATTENTION : Le TP noté est limité à 45 minutes. Passée cette période, vous
ne pourrez plus rendre le TP noté.
— Seuls les étudiants présents en TP seront évalués sur cet exercice.