CONST nmax = 20 ;
TYPE point = array[1..3] of real ;
triangle = array[1..3] of point ;
liste = array[1..20] of triangle ;
VAR L : liste ;
n : 1..nmax ; (* taille de la liste *)
choix, i, j, k : integer ;
BEGIN
n:=0 ;
repeat
(* affichage du menu *)
writeln(' -1- Afficher la liste des triangles')
;
writeln(' -2- Ajouter un triangle') ;
writeln(' -3- Supprimer un triangle') ;
writeln(' -0- Quitter') ;
(* saisie du choix *)
repeat
write('Votre choix ? ')
; readln(choix) ;
until (choix>=0) and (choix<=3) ;
(* traitements *)
case choix of
1 : Begin
writeln(' n° X1 Y1
Z1 X2 Y2
Z2 X3 Y3
Z3 ') ;
for i:=1 to n do (* pour chaque triangle de la liste *)
begin
write(i:3) ;
for j:=1 to 3 do (* pour chaque point du triangle *)
for k:=1 to 3 do (* pour chaque coordonnée du point *)
write(L[i,j,k]:8) ;
writeln ;
end ;
writeln ;
End ;
2 : Begin
if n=nmax
then writeln('Ajout impossible : la liste est pleine !')
else begin
for j:=1 to 3 do (* pour chaque point a ajouter *)
begin
writeln(j,'-ième point :') ;
for k:=1 to 3 do (* pour chaque coordonnée du point *)
begin
write(k,'-ième coordonnée ? ') ; readln(L[n+1,j,k]) ;
end ;
end ;
end ;
End ;
3 : Begin
if n=0
then writeln('Suppression impossible : la liste est vide') ;
else begin
repeat
write('Supprimer le triangle numéro (1 à ',n,') ? ') ; readln(i)
;
until (i>=1) and (i<=n) ;
(* remontée des triangles dans la liste, ce qui supprime le triangle
n°i *)
if i<n then
for h:=i+1 to n do
for j:=1 to 3 do
for k:=1 to 3 do
L[h-1,j,k]:=L[h,j,k] ;
(* mise à jour de la taille de la liste *)
n:=n-1 ;
end ;
End ;
end ;
until choix=0 ;
END.