PROGRAM TriTab; //
USES crt;
VAR t:array[0..255]of shortstring;
ig:byte=0;
i:byte;
FUNCTION menu:char;
VAR prevx,prevy:byte;
BEGIN
clrscr;
write('Menu : '); prevx:=wherex; prevy:=wherey; writeln;
writeln('------');
writeln('1/ Ajouter un nom');
writeln('2/ Supprimer un nom');
writeln('3/ Lister les noms');
writeln('4/ Quitter');
gotoxy(prevx,prevy); readln(menu);
END;
PROCEDURE addname;
VAR nom:shortstring;
BEGIN
clrscr;
write('Entrez le nom : '); readln(nom);
if (nom<>'')then begin
i:=ig+1;
while((i>0)and(nom<t[i-1]))do begin
t[i]:=t[i-1];
i:=i-1;
end;
t[i]:=nom;
ig+=1;
end else begin write('* Aucun nom enregistre *'); readln; end;
END;
PROCEDURE delname;
VAR nom:shortstring;
BEGIN
clrscr; i:=ig;
write('Nom a supprimer : '); readln(nom);
while((i>0)and(nom<>t[i]))do i-=1;
if(i>0)then begin
for i:=i to ig do t[i]:=t[i+1];
ig-=1;
end else begin write('* Aucun nom ne correspond *'); readln; end;
END;
PROCEDURE list;
BEGIN
clrscr;
writeln('* Liste des noms presents *');
writeln(' ----------------------- ');
for i:=1 to ig do writeln(i, ' : ', t[i]);
writeln(' --------------- ');
writeln('* Fin de la liste *');
readln;
END;
BEGIN
repeat
case menu of
'1':addname;
'2':delname;
'3':list;
'4':halt;
end;
until FALSE;
END.