Bonjour à tous,
Dans le cadre d'un devoir pour mon école, j'ai un programme à coder. Je pense ne pas être très loin du but mais je ne comprend pas pourquoi le compilateur me renvoie à chaque execution la valeur : 0, j'ai beau chercher je ne trouve pas mon erreur.
Merci par avance à ceux qui se donneront la peine de jeter à un oeil.
Voici l'énoncé :
On se propose d’écrire un programme permettant de gérer des albums musicaux, c’est-à-dire : saisir l’ensemble des albums, faire la sauvegarde dans un fichier, lire un fichier existant et déterminer l’album qui dure le plus longtemps.
1) Définition des types
- Déclarer une constante MAX_CHANSON à 30 (nombre maximum de chansons par album) et une constante MAX_ALBUM à 20 (nombre maximum d’albums dans le fichier).
- Définir un type enregistrement T_chanson comprenant les champs titre (une chaîne de 63 caractères au plus) et duree (un entier exprimant la durée en secondes).
- Définir un type enregistrement T_album comprenant les champs liste (un tableau de T_chanson indicé de 1 à MAX_CHANSON), nb_chansons et annee (des entiers), titre et artiste (des chaînes de 63 caractères au plus).
2) Saisie et sauvegarde des albums
- Définir un type fichier F_albums permettant de sauvegarder des éléments du type T_album.
- Ecrire une procédure saisie_album(nom_fichier :string) permettant de saisir les informations de chacun des albums et de les sauvegarder dans le fichier nom_fichier. Le fichier doit être fermé à la fin de la procédure.
3) Lecture du fichier et détermination de l’album de plus long durée
- Ecrire une fonction duree_totale(a : T_album) qui renvoie la durée totale en secondes de l’album a.
- Ecrire une fonction plus_long_album(nom_fichier :string) qui ouvre le fichier nom_fichier créé par saisie_albums, lit les enregistrements de ce fichier et renvoie la durée de l’album le plus long en secondes.
4) Programme principal
Ecrire le programme principal faisant appel aux différentes fonctions et procédures."
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95 program EXO; const MAX_CHANSON = 30; MAX_ALBUM = 20; type T_Chanson = record titre : string[63]; duree : integer; end; T_album = record liste : array [1..MAX_CHANSON] of T_Chanson; nb_chansons, annee : integer; titre, artiste : string[63]; end; F_albums = file of T_album; var nomFichierext:string; procedure saisie_album(nom_fichier : string); var na ,nc ,i ,j : integer; f : F_albums; album : T_album; begin repeat writeln('combien d albums voulez vous sauvegarder ?'); readln(na); until na<MAX_ALBUM; assign(f,nom_fichier); rewrite(f); for i:=1 to na do begin with album do begin writeln (i,'eme album: '); write('Entrez le nombre de chanson'); readln(nc); for j:=1 to nc do begin write('Titre chanson: '); readln(liste[j].titre); write('duree de la chanson: '); readln(liste[j].duree); end; nb_chansons := nc; write('l annee de l album ',i,': '); readln(annee); write('titre de l album ',i,': '); readln(titre); write('artiste de l album ',i,': '); readln(artiste); end; end; close(f); end; function dureetotale(a : T_album): integer; var i, dt : integer; begin dt:=0; for i:=1 to a.nb_chansons do dt:= dt + a.liste[i].duree; dureetotale:=dt; end; function plus_long_album(nom_fichier :string): integer; var a : T_album; max : integer; f : F_albums; begin max:=0; assign(f,nom_fichier); reset(f); while not eof(f) do begin read(f,a); with a do begin if (dureetotale(a)> max) then max:=dureetotale(a); end; end; close(f); plus_long_album:=max; writeln(max); end; begin writeln('entrez nom fichier'); readln(nomFichierext); saisie_album(nomFichierext); plus_long_album(nomFichierext); readln(); end.
Partager