5

Click here to load reader

Td Corrige Algo Structures

Embed Size (px)

Citation preview

Page 1: Td Corrige Algo Structures

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 - mois naissance - année naissance

29 02 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

Page 2: Td Corrige Algo Structures

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

Page 3: Td Corrige Algo Structures

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_etu�t.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

Page 4: Td Corrige Algo Structures

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) e�t.tablo[i] trouve�true 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) e�t.tablo[i] trouve�true 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 !!!

Page 5: Td Corrige Algo Structures

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, …