TYPE point = array[1..3] of real;
triangle = array[1..3] of point;
liste = array[1..20] of triangle;
VAR LI : liste;
Tr : triangle;
M : point;
taille, i : integer;
choix : char;
PROCEDURE SAISIRPOINT(Var P : point);
Var i : integer;
Begin
writeln('coordonnées du point :');
for i:=1 to 3 do
begin
write('[',i,'] ? ');
readln(P[i]);
end;
End;
PROCEDURE SAISIRTRIANGLE(Var T : triangle);
Var i : integer;
Begin
writeln('points du triangle :');
for i:=1 to 3 do
begin
writeln('point n°',i,' ? ');
SAISIRPOINT(T[i]);
end;
End;
PROCEDURE AFFICHERLISTE(L : liste; n: integer);
Const xyz='XYZ';
Var i, j, k :integer;
Begin
write('n°');
for j:=1 to 3 do
for k:=1 to 3 do
write(' ':6,xyz[j],k);
writeln;
for i:=1 to n do
begin
write(i:2);
for j:=1 to 3 do
for k:=1 to 3 do
write(L[i][j][k]:8:3);
writeln;
end;
End;
FUNCTION AJOUTERTRIANGLE(Var L : liste; Var n : integer; T : triangle):boolean;
Var j, k : integer;
Begin
if n>=20 then AJOUTERTRIANGLE:=false
else begin
for j:=1 to 3 do
for k:=1 to 3 do
L[n+1][j][k]:=T[j][k];
n:=n+1;
AJOUTERTRIANGLE:=true;
end;
End;
FUNCTION SUPPRIMER(Var L : liste; Var n : integer; p : integer):boolean;
Var i, j, k : integer;
Begin
if (p<1) or (p>n) then SUPPRIMER:=false
else begin
for i:=i to n do
for j:=1 to 3 do
for k:=1 to 3 do
L[i][j][k]:=L[i+1][j][k];
n:=n-1;
SUPPRIMER:=true;
end;
End;
PROCEDURE TRANSLATER(Var T : triangle; P : point);
Var j,k : integer;
Begin
for j:=1 to 3 do
for k:=1 to 3 do T[j][k]:=T[j][k]+P[k];
End;
BEGIN
taille:=0;
writeln('Liste de triangle : Le menu');
repeat
writeln('-1- afficher la liste');
writeln('-2- ajouter un triangle');
writeln('-3- supprimer un triangle');
writeln('-4- modifier un triangle');
writeln('-0- terminer');
repeat
write('choix ? ') ; readln(choix);
until (choix>='0') and (choix<='4');
case choix of
'1' : AFFICHERLISTE(Li,taille);
'2' : begin
SAISIRTRIANGLE(Tr);
if (not AJOUTERTRIANGLE(Li,taille,Tr))
then writeln('ajout impossible');
end;
'3' : begin
repeat
write('supprimer le triangle numéro (1 à ',taille,') ? ');
readln(i);
until SUPPRIMER(Li,taille,i);
end;
'4' : begin
repeat
write('translater le triangle numéro (1 à ',taille,') ? ');
readln(i);
until (i<=taille) and (i>0);
writeln('translater avec le point :');
SAISIRPOINT(M);
TRANSLATER(Li[i],M);
end;
end;
until (choix='0');
END.