0% ont trouvé ce document utile (0 vote)
16 vues3 pages

Bibliothèque C : Fonctions sur Tableaux

Transféré par

tobiagongbonon
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
16 vues3 pages

Bibliothèque C : Fonctions sur Tableaux

Transféré par

tobiagongbonon
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

IUT des Pays de l’Adour - RT1

Informatique - Module IC2 - Algorithmique Avancée

Langage C
Sujet 00 : 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’utilisation 1 . 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 fonction EditerTab(N,Tab) qui permet d’afficher (proprement) les N valeurs réelles stockées
dans le tableau Tab.
3. Ecrire la fonction SommeTab(N,Tab) qui retourne la somme des N valeurs 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 fonction SommeTab écrite précédemment.
5. Ecrire les fonctions MaxTab(N,Tab) et MinTab(N,Tab) qui retournent respectivement la valeur maximale
et la valeur minimale des N 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 du malloc), et cette taille ne peut plus
varier par la suite, même si le tableau est plein ⇒ nous sommes obligés de sur-dimensionner nos tableaux.

1
Solution

#include <s t d i o . h>

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


int 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 ( " Valeur ␣%d : ␣ " , i +1);
s c a n f ( "%f " ,&Tab [ i ] ) ;
}
p r i n t f ( "\n" ) ;
}

void EditerTab ( int N, f l o a t Tab [ ] ) {


int i ;
f o r ( i =0; i <N; i ++) {
p r i n t f ( " Valeur ␣%d␣=␣%f \n" , i +1,Tab [ i ] ) ;
}
p r i n t f ( "\n" ) ;
}

f l o a t SommeTab( int N, f l o a t Tab [ ] ) {


int 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 ( int N, f l o a t Tab [ ] ) {


return SommeTab(N, Tab ) /N;
}

f l o a t MaxTab( int N, f l o a t Tab [ ] ) {


int 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
f l o a t MinTab ( int N, f l o a t Tab [ ] ) {
int 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 ;
}

int SupValTab ( int N, f l o a t Tab [ ] , f l o a t Val ) {


int i ;
int 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 ;
}

int main ( int argc , char ∗∗ argv ) {


f l o a t myTab [ 1 0 0 ] ;
int nb ;
float v ;

ChargerTab(&nb , myTab ) ;
EditerTab ( 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 ( "\ nValeur ␣ 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 ) ;
}

Vous aimerez peut-être aussi