Vous êtes sur la page 1sur 4

SERIE Structure

Rappel:
Le problme du rpertoire tlphonique se pose a chacun dentre nous. Au dbut,
nous connaissons par cur les numros de tlphone des gens que nous connaissons. Peu a peu
nous en avons trop et il faut prendre quelques notes. Les notes sentassent et on aimerait bien
mettre un peu dordre. On pense a un rpertoire tlphonique.
Un rpertoire raliste comprendrait le nom, le prnom, le numro de tlphone fixe, le numro
du mobile, le numro du bureau, ladresse e-mail et bien plus. Considrons un cas trs simple
avec juste un nom et un numro de tlphone par item.
Une telle structure de donnes sappelle enregistrement (en anglais record) ou tout
simplement structure en langage C.
Un premier exemple de dclaration de type structure.- Ces dcisions nous permettent de considrer la
fiche comme un lment du type structure suivant :
struct item
{
char nom[30];
char tel[20];
};
Dfinition dun type structure.
- La syntaxe suit la rgle suivante :
struct nomdelastructure
{
type 1 champ 1 ;
type 2 champ 2 ;
------type n champ n ;
};

Membres de la structure

DECLARATION DES VARIABLES STRUCTUREES


On dclare variable structure de la faon suivante:
struct nomdelastructure nonVariableStrucutre

ISTA NTIC BENIMELLAL : KHELLOUFI ABDELKRIM :TDI LANGAGE C

Exemple.
struct item
{
char nom[30];
char tel[20];
};

- Pour le type structure ci-dessus on peut dclarer une variable, disons personne, de la
faon suivante :

struct item personne ;


On remarquera la ncessite de rpter le mot cl struct.
Accs aux champs dune structure
Les variables dun type structure peuvent tre manipules globalement dans une affectation
ou champ par champ. Laccs a un champ se fait grce a loperateur de champ . Par exemple

personne.nom permet daccder au champ nom de la variable structure personne.


Initialisation lors de la dclaration
En langage C on peut initialiser une variable structure lors de sa dclaration, comme pour
les tableaux avec des accolades et des virgules. Par exemple :
struct item
{
char nom [30] ;
char prenom [20] ;
int age ;
};
struct item p = {"Dubois", "Paul", 30} ;

Structure comme paramtre de fonction


Introduction.- Une structure peut servir de paramtre `a une fonction, avec passage par valeur
ou par adresse, et peut tre le rsultat dune fonction, sans quil ny ait rien de plus `a en dire.
Exercice:
Ecrire des fonctions affiche() et saisie() pour la structure prcdente.
Les dclarations seront :
void affiche( struct donnee personne) ;
void saisieE( struct donnee *personne) ;

ISTA NTIC BENIMELLAL : KHELLOUFI ABDELKRIM :TDI LANGAGE C

les appels se faisant sous la forme :


affiche(personne);
saisie(&personne);
de faon habituelle. ]

ex1 :
1-dclarer la structure qui se compose des champs suivant :
Structure :eleve
Numro entier
Nom
chaine de caractre
Age entier

2- dclarer une variable structure lve et afficher ses informations dans le main
3-on veut remplir les informations d'une classe de 10 lves :
3-a -dclarer tableau de structure struct eleve T[10] et remplissez le .
3-b-continuer le programme du 3-a et afficher combien d lve ont un ge suprieur a 25 ans
3-c afficher combien de nom gale a "amine" dans le tableau T de structure.

ex2 :
1-en prenant la structure de l Ex1 crire la fonction qui admet en paramtre une variable de
type structure lve et qui retourne son ge utilisez la dans un exemple .
2-crire une fonction qui admet en paramtre un tableau de strucutre T et sa taille et qui
retourne le nombre des lves ayant un ge >25
voici le format gnrale de la fonction int NombreAge(struct eleve T[ ], int taille)
3-utilisez la fonction de la question 2 dans un programme complet.

ex3

ISTA NTIC BENIMELLAL : KHELLOUFI ABDELKRIM :TDI LANGAGE C

Soit une classe de 24 stagiaires. Chaque stagiaire est reprsent par les informations suivantes :
Nom

chaine(20)

Prnom

chaine(30)

Notes

Tableau(10) rel

Moyenne

rel

Classement

entier

Utilisez un tableau pour contenir les donnes des stagiaires.


On veut raliser les traitements suivants:
-

Saisir les donnes ncessaires


Calculer la moyenne pour chaque stagiaire
Trier les stagiaires par la moyenne et dans le sens dcroissant.
Mthode suivre:
Vous raliserez 23 tapes. A l'tape i, prenez tous les lments du tableau partir de celui
d'indice (i+1). Pour chacun de ces lments, comparez sa moyenne avec celle d'indice i. Si la
premire est suprieure (>) l'autre, ralisez une permutation.
Remarque : Cette mthode de tri est dconseille mais elle est simple concevoir. Par la suite,
vous pouvez faire appel lune des mthodes de tri connues (voir cours : tri par permutation,
bulle, )
Dterminer le classement pour chaque stagiaire:
Mthode suivre:
On sait qu'aprs avoir effectu le tri, le premier stagiaire dans le tableau a la plus grande
moyenne. Donc, son classement est gal 1. Pour i suprieur 1, nous avons deux cas : Si sa
moyenne est diffrente de la prcdente, le classement est gal i, sinon (c.--d. gale) le
classement est gal celui du stagiaire prcdent.
Afficher les donnes de tous les stagiaires.

ISTA NTIC BENIMELLAL : KHELLOUFI ABDELKRIM :TDI LANGAGE C