Salut a tous, voila j'aime a approfondir les td que nous donne nos proffesseurs et je doute sur l'efficacité d'une de mes fonctions, il s'agit en fait d'une fonction destiner a supprimmer un element d'un enregistrement, voici mon enregistrement:
la fonction doit en fait me premettre de supprimmer un des etudiants du groupe et voivi comment j'ai procédé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 type etudiant = record nom, prenom :string; note :real; end; type groupe = record n:integer; t:array [1..nmax] of etudiant; end;
en fait je me suis dit que je pouvais echanger la place de l'etudiant que je voulais supprimer avec le dernier etudiant du tableau puis réduire l'effectif du groupe et que cela supprimerait peut etre la derniere entrée, mais je ne suis pas du tout sur que cela fonctionne tres bien, donc si vous pouvez me dire si cela peut marcher et si ca ne marche pas me proposer une alternative je vous en serai tres reconnaissant.
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 procedure supprimer_etudiant(g:groupe;nom,prenom:string); var i,k:integer; var answer:string; begin k:=0; write('entrer le nom de l''étudiant que vous voulez supprimer : '); readln(nom); write('entrer le prenom de l''étudiant que vous voulez supprimer : '); readln(prenom); for i:= 1 to g.n do begin if (g.t[i].nom=nom) and (g.t[i].prenom=prenom) then begin k:= i; break; end; if k=0 then writeln('l''etudiant n''appartient pas a ce groupe impossible de le supprimer !!'); end; writeln('ATTENTION voulez vous vraiment supprimer : '); write(g.t[k].nom,' ',g.t[k].prenom,' ? (yes/no)'); readln(answer); if answer= 'yes' then begin g.t[k]:=g.t[g.n]; g.n := g.n-1; end; end;
Merci d'avance
Partager