Salut tout le monde
j'ai un exercice que je l'ai déjà fait mais il existe trop d'erreurs
alors je vous donne l'exercice et j'attends la réponse svp
![]()
j'attends bien vos réponses , Merci d'avance !
Salut tout le monde
j'ai un exercice que je l'ai déjà fait mais il existe trop d'erreurs
alors je vous donne l'exercice et j'attends la réponse svp
![]()
j'attends bien vos réponses , Merci d'avance !
Boe,
1- Quand tu dis que tu nous donnes l'exercice, il faut effectivement le mettre.
2- ET SURTOUT : nous ne sommes pas là pour faire tes devoirs, alors montre-nous où tu en es, ce que tu as déjà fait ....
... et on pourra t'aider.![]()
Salut,
sinon, le début est simple: présente nous un programme avec 2 variables tableau et 4 procédures, les plus complètes possibles
A+
oui voila mon travail
http://www.4shared.com/file/96165154.../exercice.html
et Merci d'avance !
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114 program etudiant; const n=1000; type etudiant=record nom:string[20]; prenom:string[20]; note:real; matiere:string[20]; end; liste=array[1..n]of etudiant; var f:file of etudiant; var etudiant:etud; t:liste; c:char; i:integer; n:integer; writeln; write('donner le nombre d etudiant'); readln(n); begin for i:=1 to n do begin write('etudiant numero ',i); with t[i] do begin write('donner le nom de l étudiant :'); readln(nom); write('donner le prénom de l etudiant :'); readln(prenom); write('donner la note de l etudiant :'); readln(note); write('donner la matiere :'); readln(matiere); end; writeln; end; readln; writeln; writeln('affichage des élément du tabeau'); writeln; for i:=1 to n do begin with t[i] do begin writeln('nom : ' ,nom); writeln('prenom : ',prenom); writeln('note :' note); writeln('matiere :',matiere); end; writeln; end; readln; procedure de tri par ordre alphabetique; var x:etud: i,j:integer: begin i:=n; while i>1 do begin j:=1; while j<i do begin if t[j].nom> t[j+1).nom then begin x:=t[j]; t[j]:=t[j+1]; t[j+1]:=x; end; j:=j+1; end; i:=i-1; end; listage(t,etudiant); readln; end; procedure de tri par moyenne; procedure de recherche; var NOM:string; x:integer; begin writeln('entrer le nom de l etudiant'); readln(NOM); x=0; reset(f); while(i<n and x=0) do begin readln(f.etud); if(etud.nom=NOM)then x=1; end; else writeln('ce nom n existe pas'); end; BEGIN repeat writeln('1:tri alphabetique,2:tri par moyenne 3:recherche,'); read(choix); case choix of 1:tri alphabetique; 2:tri par moyenne; 3:recherche; end; until (choix=4); end.
Je vois dans les déclarations :
1. Const n et var n, il faut choisir et vu que tu utilises bcp la variable n dans ton programme, il faut supprimer la constante n.
2. Le problème de ta constante n impose un tableau dynamique d'élèves :
remplacé par
Code : Sélectionner tout - Visualiser dans une fenêtre à part liste=array[1..n]of etudiant;
tu lis la variable n
Code : Sélectionner tout - Visualiser dans une fenêtre à part liste=array of etudiant;
et tu assignes la longueur du tableau d'étudiants à n ou n+k (où k désigne au moins 1)
Code : Sélectionner tout - Visualiser dans une fenêtre à part readln(n);
3. Tu supprimes
4. Après ton readln(r), tu fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2var etudiant:etud;
grandir ton tableau.
Code : Sélectionner tout - Visualiser dans une fenêtre à part setlength(t,n+1);
5. Les write et les read, c'est dangeureux, utilise des writeln et readln.
6. De la ligne 55 à 112, tu mets en commentaire et tu vois déjà la sortie
Code ...diant.pas : 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 program etudiant; type etudiant=record nom:string[20]; prenom:string[20]; note:real; matiere:string[20]; end; {/Drecor} liste = array of etudiant; var f : file of etudiant; t : liste; c : char; i : integer; n : Integer; begin writeln; write('donner le nombre d''etudiants : '); readln(n); setlength(t,n+1); // Au moins plus grand que le nombre d'étudiants
Hello,
une petite remarque: un étudiant peut avoir plusieurs notes. Dans ce cas il faudrait non pas une note mais un tableau de notes dans un record "etudiant".
Je ne sais pas s'il est nécessaire de rajouter le champ "matière" (pour l'instant en tout cas), ça complique un peu. Car il faut dans ce cas rentrer une matière par note. Et avoir aussi un tableau de matières. Mais pourquoi pas.
Dans ce cas le code devient
en gérant aussi les tableaux "notes" et "matieres" de façon dynamique. J'ai aussi la manie d'appeler le type Tetudiant. C'est pour savoir à quoi on a à faire (type ou variable). Et ca permet d'utiliser "etudiant" en tant que variable si nécessaire... Mais ça reste un choix perso...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 program etudiant; type Tetudiant=record nom:string[20]; prenom:string[20]; matieres:array of string[20]; notes:array of real; end; liste = array of etudiant;
Se pose aussi la question suivante: tous les élèves ont-ils tous les mêmes matières? Et/ou une seule note par matière?? On peut trouver des types plus simples (un tableau 2D [eleve*matiere] de notes si la réponse est oui pour les 2 questions)...
Sinon tu as mis un bout de code sans début ni fin après les variables, qui fait la saisie et l'affichage du tableau. Il faudrait mettre un
au début par exemple, et mettre l'affichage ailleurs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Procedure Saisie;
De plus il va falloir gérer la saisie de plusieurs notes pour un même élève.
Je pars maintenant du programme principal. L'idée du menu est bonne. Reviens à la ligne entre chaque choix.
Et encore 2 trucs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 writeln('1:tri alphabetique'); writeln('2:tri par moyenne'); writeln('3:recherche'); writeln('4:Quitter');
- soigne la présentation: saute une ligne entre chaque procédure et le programme principal et décale le code d'une tabulation lorsque tu rentres dans une structure (for, while, begin de procedure,...).
- Compile ton code! Je n'ai même pas ouvert TP pour voir quoi arranger. Corrige toutes les fautes de compilation, la suite sera plus claire.
J'aurai plein d'autres choses à dire mais ce sera dans un deuxième temps. Occupe toi déjà de tout çaet on pourra construire un truc d'intéressant dessus.
A+
Partager