Vous êtes sur la page 1sur 5

TD N2 : SOUS-PROGRAMMES

Exercice 1 :
Ecrire un programme se servant d'une fonction MOYENNE du type float pour afficher la
moyenne arithmétique de deux nombres réels entrés au clavier.

Exercice 2 :
Ecrire deux fonctions qui calculent la valeur XN pour une valeur réelle X (type double) et une
valeur entière positive N (type int) :
a) EXP1 retourne la valeur XN comme résultat.
b) EXP2 affecte la valeur XN à X.
Ecrire un programme qui teste les deux fonctions à l'aide de valeurs lues au clavier.

Exercice 3 :
Ecrire une fonction MIN et une fonction MAX qui déterminent le minimum et le maximum
de deux nombres réels.
Ecrire un programme se servant des fonctions MIN et MAX pour déterminer le minimum et le
maximum de quatre nombres réels entrés au clavier.

Exercice 4 :
Ecrire la fonction NCHIFFRES du type int qui obtient une valeur entière N (positive ou
négative) du type long comme paramètre et qui fournit le nombre de chiffres de N comme
résultat.
Ecrire un petit programme qui teste la fonction NCHIFFRES :
Exemple :
Introduire un nombre entier : 6457392
Le nombre 6457392 a 7 chiffres.

Exercice 5:

Ecrire une fonction de résolution d’ une équation du second degré ax2+bx+c =0 dont les
entiers a,b,c sont les paramètres et donne les solutions dans l’ ensemble des réels .

Exercice 6 : nombre à l’envers


Ecrire une fonction qui saisit un nombre entier et l’affiche à l’envers. Par exemple, si
on rentre le nombre 78151, le programme affichera 15187. Vous utiliserez pour cela
une boucle qui extrait un chiffre à afficher.

Les opérations de division et de modulo ou reste de la division entière (opérateur %)


vous aideront.

Exercice 7 Fibonacci

Ecrire une fonction qui calcule les valeurs de la série de Fibonacci, définie par :

– u0 = 0

– u1 = 1

– un = un−1 + un−2

Ecrivez cette fonction sous forme itérative et sous forme récursive. Laquelle des deux
variantes est préférable ici ?

Combien d’appels à la fonction f sont-ils faits pour calculer U(5)

Exercice 8

Ecrire un sous-programme récursif qui calcule la somme des n premiers carrés. Par exemple,
si n vaut 3, ce sous-programme calculera 1 2 + 22 + 32. Ce sous-programme n’est défini que
pour un n supérieur à 0.

Exercice 9

Ecrivez une fonction PGDC de deux façons itérative et la forme récursive qui calcule et
affiche le plus grand diviseur commun de deux nombres entiers positifs.

Utilisez la formule d'Euclide pour déterminer le plus grand diviseur. Cette formule se résume
comme suit:
Soient deux nombres entiers positifs a et b. Si a est plus grand que b, le plus grand diviseur
commun de a et b est le même que pour a-b et b. Vice versa si b est plus grand que a.
Les équivalences mathématiques utiles sont:
1. Si a > b, alors PGDC(a, b) = PGDC(a-b, b)

2. PGDC(a, a) = a

Exercice 10

Ecrire une fonction qui retourne 1 si un mot est palindrome (se lit de droite comme de
gauche), exemples : « elle », « ici » sont des mots palindrome , et 0 sinon .

Exercice 11
Ecrire la fonction SOMME_TAB qui calcule la somme des N éléments d'un tableau TAB du
type int. N et TAB sont fournis comme paramètres; la somme est retournée comme résultat
du type long.

Exercice 12:
Ecrire la fonction LONG_CH qui retourne la longueur d'une chaîne de caractères CH comme
résultat. Implémentez LONG_CH sans utiliser de variable d'aide numérique.

Exercice 13:
Ecrire la fonction MAJ_CH qui convertit toutes les lettres d'une chaîne en majuscules, sans
utiliser de variable d'aide.

Exercice 14 :
Ecrire la fonction AJOUTE_CH à deux paramètres CH1 et CH2 qui copie la chaîne de
caractères CH2 à la fin de la chaîne CH1 sans utiliser de variable d'aide.

Exercice 15 :
Ecrire la fonction NMOTS_CH qui retourne comme résultat le nombre de mots contenus dans
une chaîne de caractères CH. Utiliser une variable logique, la fonction isspace et une variable
d'aide N.

Exercice 16 :
Ecrire la fonction EGAL_N_CH qui retourne la valeur 1 si les N premiers caractères de CH1
et CH2 sont égaux, sinon la valeur 0. (Si N est plus grand que la longueur de CH1 ou de CH2,
le résultat peut être 1 ou 0).
Exercice 17 :
Déterminer le maximum de N éléments d'un tableau TAB d'entiers de trois façons
différentes :
a) la fonction MAX1 retourne la valeur maximale
b) la fonction MAX2 retourne l'indice de l'élément maximal
c) la fonction MAX3 retourne l'adresse de l'élément maximal

Ecrire un programme pour tester les trois fonctions.

Exercice 18
Une menuiserie industrielle gère un stock de panneaux de bois. Chaque panneau possède une
largeur, une longueur et une épaisseur en millimètres, ainsi que le type de bois qui peut
être un pin (code 0), un chêne (code 1) ou un hêtre (code 2).

1) Définir une structure panneau contenant toutes les informations relatives à un panneau de
bois
2) Ecrire les fonctions de saisie et d’affichage d’un panneau de bois (saisie numérique pour
le type de bois (ex : 0), affichage en caractères du type de bois (ex : pin))
3) Ecrire une fonction qui calcule le volume en mètres cube d’un panneau
((épaisseur*largeur*longueur)/109) ;

Exercice 19
Considérons les structures suivantes :
Date définie par trois champs jour, mois et année
Adresse définie par Numero, Rue, Commune, Wilaya, CodePostal
Employé définie par NomPrenom, Residence, DateNaissance
1) Ecrire une fonction Employé SaisirEmployé() qui permet de saisir les informations d’un
employé à partir du clavier.
2) Ecrire une fonction … AnneeNaissance(……) qui permet de vérifier si un employé est né
avant une année donnée.
3) Ecrire une fonction … WilayaResidence(……) qui permet de vérifier si un employé est
résidant dans une wilaya donnée
4) En utilisant les fonctions ci-dessus, écrire un programme qui permet de :
a) Remplir un tableau appelé Département de N éléments de type Employé, avec N <= 100.
b) Afficher les noms et prénoms des employés résidants dans une wilaya donnée et nés avant
une année donnée.

Vous aimerez peut-être aussi