• Aucun résultat trouvé

Sujet 10 : Fonctions et tableaux

N/A
N/A
Protected

Academic year: 2022

Partager "Sujet 10 : Fonctions et tableaux"

Copied!
3
0
0

Texte intégral

(1)

IUT des Pays de l’Adour - RT1

Module I3 - Techniques de Programmation

Langage C

Sujet 10 : Fonctions et tableaux

On souhaite écrire en langage C une bibliothèque de sous-programmes indépendants permettant d’assurer un certain nombre de fonctionnalités sur un ensemble de valeurs réelles représenté par une structure de données de type tableau. On suppose que le nombre de valeurs à traiter ne dépassera jamais 100, quel que soit le contexte d’utilisation1. Cet exercice a deux objectifs :

• Le premier est d’écrire un ensemble de fonctions C qui pourra constituer une bibliothèque, et cela de façon indépendante de tout programme susceptible de les utiliser.

• Le second consiste à développer des programmes qui utiliseront effectivement ces sous-programmes.

Cette approche vous permettra d’appréhender des notions telles que la modularité, la ré-utilisabilité et la généricité.

? ? ?

La définition de ces modules fonctionnels a déjà été réalisée (phase de conception). Pour chaque module (ou fonction), il est spécifié :

– son nom (et vous devez respecter les majuscules/minuscules), – l’identificateur de chaque paramètre formel,

– la fonctionnalité globale du module et la sémantique des paramètres

Il vous est formellement interdit d’ajouter des paramètres à ces modules ou d’utiliser des variables globales à vos programmes. Toujours dans le même ordre d’idée, vos modules ne doivent faire aucune lecture ou écriture de données, sauf si ceci est explicitement mentionné dans la description du module.

Description des modules :

1. Ecrire la fonction ChargerTab(N,Tab) qui permet de stocker en mémoire N valeurs réelles dans le tableau Tab. Le nombre N doit également être lu par cette fonction (qui doit donc le renvoyer au programme appelant).

2. Ecrire la fonctionEditerTab(N,Tab) qui permet d’afficher (proprement) les N valeurs réelles stockées dans le tableauTab.

3. Ecrire la fonctionSommeTab(N,Tab)qui retourne la somme desNvaleurs réelles stockées dans le tableau Tab.

4. Ecrire la fonction MoyenneTab(N,Tab)qui retourne la moyenne des N valeurs réelles stockées dans le tableau Tab. Cette fonction devra impérativement utiliser la fonctionSommeTabécrite précédemment.

5. Ecrire les fonctionsMaxTab(N,Tab)etMinTab(N,Tab)qui retournent respectivement la valeur maximale et la valeur minimale desN valeurs réelles stockées dans le tableau Tab.

6. Ecrire la fonction SupValTab(N,Tab,Val) qui retourne le nombre de valeurs du tableau Tab qui sont supérieures à la valeur Val passée en paramètre.

1. Rappel : la taille d’un tableau est fixée lors de sa déclaration (voire au moment dumalloc), et cette taille ne peut plus varier par la suite, même si le tableau est pleinnous sommes obligés desur-dimensionnernos tableaux.

1

(2)

Solution

#include <s t d i o . h>

void ChargerTab (i n t∗ N, f l o a t Tab [ ] ) { i n t i ;

p r i n t f ( " Combien␣ de ␣ v a l e u r s ␣ ? ␣ " ) ; s c a n f ( "%d" ,N ) ;

f o r( i =0; i <∗N; i ++) {

p r i n t f ( " V a l e u r ␣%d : ␣ " , i + 1 ) ; s c a n f ( "%f " ,&Tab [ i ] ) ;

}

p r i n t f ( " \n" ) ; }

void Edite rTab (i n t N, f l o a t Tab [ ] ) { i n t i ;

f o r ( i =0; i <N; i ++) {

p r i n t f ( " V a l e u r ␣%d␣=␣%f \n" , i +1 ,Tab [ i ] ) ; }

p r i n t f ( " \n" ) ; }

f l o a t SommeTab (i n t N, f l o a t Tab [ ] ) { i n t i ;

f l o a t r e s u l t a t =0;

f o r ( i =0; i <N; i ++) { r e s u l t a t += Tab [ i ] ; }

return r e s u l t a t ; }

f l o a t MoyenneTab (i n t N, f l o a t Tab [ ] ) { return SommeTab (N, Tab ) /N;

}

f l o a t MaxTab(i n t N, f l o a t Tab [ ] ) { i n t i ;

f l o a t r e s u l t a t = Tab [ 0 ] ; f o r ( i =1; i <N; i ++) {

i f ( Tab [ i ]> r e s u l t a t ) r e s u l t a t = Tab [ i ] ; }

return r e s u l t a t ; }

2

(3)

f l o a t MinTab (i n t N, f l o a t Tab [ ] ) { i n t i ;

f l o a t r e s u l t a t = Tab [ 0 ] ; f o r ( i =1; i <N; i ++) {

i f ( Tab [ i ]< r e s u l t a t ) r e s u l t a t = Tab [ i ] ; }

return r e s u l t a t ; }

i n t SupValTab (i n t N, f l o a t Tab [ ] , f l o a t Val ) { i n t i ;

i n t r e s u l t a t =0;

f o r ( i =0; i <N; i ++) { i f ( Tab [ i ]> Val )

r e s u l t a t ++;

}

return r e s u l t a t ; }

i n t main (i n t a r g c , char∗∗ a r g v ) { f l o a t myTab [ 1 0 0 ] ;

i n t nb ; f l o a t v ;

ChargerTab(&nb , myTab ) ; Editer Tab ( nb , myTab ) ;

p r i n t f ( "Somme␣ ␣ ␣=␣%f \n" , SommeTab ( nb , myTab ) ) ; p r i n t f ( "Moyenne␣=␣%f \n" , MoyenneTab ( nb , myTab ) ) ; p r i n t f ( "Max␣ ␣ ␣ ␣ ␣=␣%f \n" , MaxTab( nb , myTab ) ) ; p r i n t f ( "Min␣ ␣ ␣ ␣ ␣=␣%f \n" , MinTab ( nb , myTab ) ) ; p r i n t f ( " \ n V a l e u r ␣ s e u i l : ␣ " ) ;

s c a n f ( "%f " ,&v ) ;

p r i n t f ( "%d␣ v a l e u r s ␣ s u p à ľ r i e u r e s ␣Ãă␣%f \n" , SupValTab ( nb , myTab , v ) , v ) ; }

3

Références

Documents relatifs

La distance entre deux arguments de la fonction n’est plus mesurée par la valeur absolue de la différence mais par la norme (euclidienne) de la différence et mène à la

Montrer que f est périodique et trouver sa plus petite période.. Exercice 10: Soit I un

Taper = (Pour signifier que nous effectuons un calcul ) puis la formule 2×A4+3 (Au lieu de taper A4 nous pouvons cliquer sur la cellule avec la souris).. 4 Procéder de

• et, pour certains types de registres, d'effectuer des translations ou décalages sur ces mots,H. „ Les registres

— Pou?' que Ec(o, i ) soit un ensemble stationnaire pour les fonctions jouissant de la propriété de Darboux, il faut et il suffit que E rencontre tout ensemble homogène de puissance

On notera que si l'on rencontre des sigles discordants (discordance pour les colonnes, dans le cas d'une superposition; ou pour les lignes, si cela est demandé, pour

Sans chercher les points critiques de f, déterminer son minimum et son maximum globaux sur R 2 en précisant les points où ils sont atteints. À l’aide de l’inégalité

Solution (Ex.1 – Exemples polynomiaux ) Ces fonctions sont polynomiales donc de classe C 1. f n’a pas de maximum global (il serait atteint en un