Fichiers & enregistrements

Écrire et relire un fichier typé

Énoncé

Saisir N avec 1 ≤ N ≤ 100. Chaque enregistrement Eleve contient un nom non vide composé uniquement de lettres A à Z (majuscules ou minuscules), de type Chaîne et une moyenne réelle entre 0 et 20. Saisir et écrire les N élèves dans eleves.dat, puis relire ce fichier typé et afficher les noms des élèves dont la moyenne est au moins 10.

Exemples et cas limites

Saisissez ces valeurs dans la console pour vérifier votre résultat :

Saisir N, puis le nom et la moyenne de chaque élève. Un nom vide ou contenant autre chose que des lettres A à Z est redemandé. Le fichier est créé avec vos saisies ; vous complétez ensuite sa lecture dans Afficher.

Pour une chaîne, ne tapez pas les guillemets. Pour "", validez une saisie vide.

Entrée
N = 2
eleve[0].nom = "Amel"
eleve[0].moyenne = 15
eleve[1].nom = "Youssef"
eleve[1].moyenne = 9
Sortie attendue
Amel
Fichier eleves.dat
[
  {
    "nom": "Amel",
    "moyenne": 15
  },
  {
    "nom": "Youssef",
    "moyenne": 9
  }
]
Entrée
N = 1
eleve[0].nom = "Sami"
eleve[0].moyenne = 10
Sortie attendue
Sami
Fichier eleves.dat
[
  {
    "nom": "Sami",
    "moyenne": 10
  }
]

Complétez les modules marqués par un commentaire dans le code de départ. Les modules déjà écrits permettent de saisir vos données. Exécutez les cas de test et comparez la sortie attendue, ou ouvrez directement l’onglet Correction.

Code algorithmique

fichier_type_enregistrements.algo
1algorithme fichier_type_enregistrements
2debut
3 saisir(n)
4 creer(n)
5 afficher()
6fin
7
8procedure saisir(@n : entier)
9debut
10 repeter
11 ecrire("N = ")
12 lire(n)
13 jusqua 1 ≤ n ≤ 100
14fin
15
16fonction alphabetique(ch : chaine) : booleen
17debut
18 si long(ch) = 0 alors
19 retourner faux
20 fin si
21 pour i de 0 à long(ch) - 1 faire
22 si non (majus(ch[i]) ∈ ["A".."Z"]) alors
23 retourner faux
24 fin si
25 fin_pour
26 retourner vrai
27fin
28
29procedure creer(n : entier)
30debut
31 ouvrir("eleves.dat", f, "wb")
32 pour i de 0 à n - 1 faire
33 repeter
34 ecrire("eleve[" + convch(i) + "].nom = ")
35 lire(e.nom)
36 jusqua alphabetique(e.nom)
37 repeter
38 ecrire("eleve[" + convch(i) + "].moyenne = ")
39 lire(e.moyenne)
40 jusqua 0 ≤ e.moyenne ≤ 20
41 ecrire(f, e)
42 fin_pour
43 fermer(f)
44fin
45
46procedure afficher()
47debut
48 // compléter le traitement demandé dans l’énoncé.
49fin

Méthode

  1. Déclarer un type Fichier de Eleve et écrire avec le mode "wb".
  2. Fermer, rouvrir en "rb", puis lire un enregistrement à la fois jusqu’à la fin.
À retenir :

ECRIRE(f, e) écrit l’enregistrement entier. AlgoTN conserve ces données dans un fichier virtuel typé, pas dans un fichier texte à lire ligne par ligne.