procedure Esercizio2 (var tab: tabella; nomef: string);
var
filetesto : text;
numrighe, numcolonne, i, j : integer;
paux : tabella;
begin
assign(filetesto, nomef);
reset(filetesto);
read(filetesto, numrighe);
read(filetesto, numcolonne);
new(tab);
paux := tab;
for i:=1 to numrighe do
for j:=1 to numcolonne do
begin
new(paux^.next);
paux := paux^.next;
read(filetesto, paux^.info);
paux^.riga := i;
paux^.colonna := j;
end;
paux^.next:=NIL;
paux := tab;
tab := tab^.next;
dispose(paux);
close(filetesto);
end;
procedure Esercizio3 (var lis, tab:tabella; e:integer);
var
taux : tabella;
procedure EliminaElemento(var t:tabella);
var
paux : tabella;
begin
paux := t;
t := t^.next;
dispose(paux);
end;
procedure InserisciElemento (var l : tabella; elem: elemento_tabella);
var
paux : tabella;
begin
new(paux);
paux^.info := elem.info;
paux^.riga := elem.riga;
paux^.colonna := elem.colonna;
paux^.next := l;
l := paux;
end;
begin
new(taux);
taux^.next := tab;
tab := taux;
while taux^.next <> NIL do
begin
if (taux^.next^.riga+taux^.next^.colonna) = e then
begin
InserisciElemento(lis,taux^.next^);
EliminaElemento(taux^.next);
end;
taux := taux^.next;
end;
taux := tab;
tab := tab^.next;
dispose(taux);
end;