Vous êtes sur la page 1sur 5

Licence ST Université Claude Bernard – Lyon 1

LIF 1 – TD 9 : Les structures


Objectifs pédagogiques :

• Manipulation des structures


• Application aux tableaux

Un étudiant sera identifié par


 son numéro d’étudiant,
 son nom,
 son prénom,
 sa date de naissance (qui sera décomposée en jour mois et année de type entier)
 un tableau contenant les moyennes aux 5 UE préparées

Numéro d’étudiant 10601234


Nom étudiant DUPONT
Prénom étudiant MARIE-CLAIRE
Date de naissance
- jour naissance 29
- mois naissance 02
- année naissance 1988

Tableau de notes 12 15 17 13 14

1. Écrire en algorithmique et en C les structures de données nécessaires à la définition


d’un étudiant et d’une structure permettant la gestion de 1500 étudiants.
Note : La date de naissance pourra être stockée dans une structure a part.
En algorithmique :

Structure date
jour : entier;
mois : entier;
annee : entier;
fin structure date
structure etudiant
numero : entier long
nom : tableau de 20 caractères
prenom : tableau de 15 caractères
naissance : structure date
notes tableau de 5 réels
fin structure etudiant
structure tab_etudiant
num_etu : entier
tablo : tableau de 1500 structure etudiant
fin structure tab_etudiant
En langage C :
struct date
{
int jour;
int mois;
int annee;
};
struct etudiant
{
double numero;
char nom[20];
char prenom[15];
date naissance;
float notes[5];
};
struct tab_etudiant
{
int num_etu;
etudiant tablo[1500];
};

2. Écrire en algorithmique les primitives suivantes :


a. Saisie d’un étudiant (remplissage des différents champs de la structure)
Fonction remplir_etudiant ( ) : struct etudiant
Précondition : aucune
Postcondition aucune
Paramètres : aucun
Resultat : stucture e remplie
Variables locales : e : etudiant et i : entier
Début
Afficher (Donnez le numero de l etudiant :)
Saisir (e.numero)
Afficher (Donnez le nom de l etudiant :)
Saisir (e.nom)
Afficher (Donnez le prenom de l etudiant :)
Saisir (e.prenom)
Afficher (Donnez la date de naissance de l etudiant :)
Afficher (Jour :)
Saisir (e.naissance.jour)
Afficher (Mois :)
Saisir (e.naissance.mois)
Afficher (Annee :)
Saisir (e.naissance.annee)

Afficher(Saisie des moyennes : )


Pour i allant de 0 a 4 par pas de 1 faire
Afficher (Donnez la ieme note : )
Saisir(e.notes[i])
Fin pour
Retourner e
Fin remplir_etudiant
b. Affichage des renseignements concernant un étudiant

Procedure Affiche_etudiant (e : structure etudiant)


Précondition : aucune
Postcondition aucune
Paramètres : e structure a afficher en donnée
Variables locales : i : entier
Début
Afficher(Numero de l etudiant : e.numero )
Afficher(Nom de l etudiant : e.nom)
Afficher(Prenom de l etudiant : e.prenom)
Afficher(Date de naissance de l etudiant : )
Afficher(Jour : e.naissance.jour)
Afficher(Mois : e.naissance.mois)
Afficher(Annee : e.naissance.annee);
Afficher(Moyennes : )
Pour i allant de 0 a 4 par pas de 1 faire
Afficher(e.notes[i)
Fin Affiche_etudiant

c. Remplissage du tableau d’étudiants avec 1 étudiant. On fera appel à


Saisie_Etudiant.

procedure remplir_tableau(t structure tab_etudiant)


Précondition : aucune
Postcondition aucune
Paramètres : t structure a remplir avec un nouvel etudiant en donnée/resultat
Variables locales : aucune
Début
Afficher(SAISIE DE L ETUDIANT : t.num_etu )
t.tablo[t.num_etu]  remplir_etudiant()
t.num_etut.num_etu+1
Fin remplir_tableau

d. Affichage de tous les étudiants présents dans le tableau. On fera appel à


Affiche_Etudiant.

Procedure affiche_tableau(t : structure tab_etudiant)


Précondition : aucune
Postcondition aucune
Paramètres : t structure a afficher en donnée
Variables locales : i : entier
Début
Pour i allant de 0 a t.num_etu-1 par pas de 1 faire
Affiche_etudiant(t.tablo[i])
Fin affiche_tableau
e. Affichage d’un étudiant recherché par son numéro dans le tableau

fonction recherche_etudiant_numero(t : structure tab_etudiant, numero : entier long, e :


structure etudiant) : booléen
Précondition : aucune
Postcondition aucune
Paramètres : t tableau rempli, numero : numero de l’etudiant recherche dans le tableau, e
structure contenant les informations sur l’etudiant de numero numero en donnée / résultat
Resultat : booleen vrai si etudiant trouve et faux sinon
Variables locales : i : entier, trouve : booléen
Début
trouve  false;
pour i allant de 0 a t.num_etu-1 par pas de 1 faire
si (t.tablo[i].numero=numero)
et.tablo[i]
trouvetrue
fin si
fin pour
retourner trouve
Fin recherche_etudiant_numero

f. Affichage d’un étudiant recherché par son nom dans le tableau.

fonction recherche_etudiant_nom(t : structure tab_etudiant, nom : chaîne de 20 caracteres, e :


structure etudiant) : booléen
Précondition : aucune
Postcondition aucune
Paramètres : t tableau rempli, nom : nom de l’etudiant recherche dans le tableau, e structure
contenant les informations sur l’etudiant de nom nom en donnée / résultat
Resultat : booleen vrai si etudiant trouve et faux sinon
Variables locales : i : entier, trouve : booléen
Début
trouve  false;
pour i allant de 0 a t.num_etu-1 par pas de 1 faire
si (t.tablo[i].nom=nom)
et.tablo[i]
trouvetrue
fin si
fin pour
retourner trouve
Fin recherche_etudiant_nom

Attention : bien expliquer aux étudiants ici qu’en algo on fait la comparaison entre deux
chaînes de caractères avec le symbole = mais qu’en C ils devront utiliser strcmp !!!
Si vous avez terminé bien avant l’heure, vous pouvez ajouter des fonctionnalites a ce petit
programme comme par exemple le calcul de moyenne d’un etudiant connu par son numero, la
recherche du major dans le tableau, …

Vous aimerez peut-être aussi