Program Liste;
Const nr_max=100;
Type indice=0..nr_max;
lista=Array[indice] Of integer;
Var L1,L2,L3:lista;
poz1,poz2,m,n:indice;
x:integer;
Procedure citire(Var L:lista;p:indice);
Var i:indice;
Begin
writeln( 'Dati elementele listei: ');
For i:=1 To p Do Begin write( 'Elementul ',i, ' este: ');readln(L[i]);
End;
End;
Procedure scriere(Var L:lista;p:indice);
Var i:indice;
Begin
For i:=1 To p Do write(L[i], ' ');
End;
Procedure stergere(Var L:lista;p,poz:indice);
Var i:indice;
Begin
For i:=poz To p-1 Do L[i]:=L[i+1];
p:=p-1;
End;
Procedure concatenare(a,b:lista;Var L:lista);
Var i:indice;
Begin
For i:=1 To m Do L[i]:=A[i];
For i:=m+1 To m+n Do L[i]:=B[i-m];
End;
Procedure inserare(Var L:lista;p,poz:indice;e:integer);
Var i:integer;
Begin
For i:=p Downto poz Do L[i+1]:=L[i];
L[poz]:=e;
p:=p+1;
End;
Begin
m:=0;n:=0;
write( 'Dati lungimea primei liste: ');readln(m);
citire(L1,m);
write( 'Dati lungimea celei de-a doua liste: ');readln(n);
citire(L2,n);
concatenare(L1,L2,L3);
writeln( 'Concatenarea listelor este: ');
scriere(L3,m+n);
writeln;
Repeat
write( 'Dati pozitia pe care vreti sa inserati un element in prima lista: ');
readln(poz1);
Until (poz1>=1) And (poz1<=m);
write( 'Dati elementul: ');readln(x);
inserare(L1,m,poz1,x);
writeln( 'Noua lista este: ');
scriere(L1,m+1);
writeln;
Repeat
write( 'Dati pozitia elementului pe care doriti sa-l stergeti din a doua lista: ');
readln(poz2);
Until (poz2>=1) And (poz2<=n);
stergere(L2,n,poz2);
writeln( 'Noua lista este: ');
scriere(L2,n-1);
readln;
End.