Я как то сомневаюсь в том, что то как я решил задачи-можно подходить к этому. В выделенных местах я правильно сделал, или было более простое решение?

Числовой ненулевой массив, дано число L. Вставить ноль в позицию L массива. Пример 12345 L=4. Результат 123045
MODULE Ex;
IMPORT In, StdLog;
VAR
N, k, c, L:INTEGER;
flag:BOOLEAN;
mas:ARRAY 10 OF INTEGER;
In.Open;
In.Int(L);
PROCEDURE L*;
BEGIN
N:=-1;
k:=0;
WHILE k<N DO
N:=N+1;
In.Int(mas[k])
k:=k+1;
END;

N:=0;
k:=0;
flag:=FALSE;
WHILE (k<N) & flag DO
IF mas[k]=L THEN
flag:=TRUE;
ELSE
k:=k+1;
END;
END;

k:=k;
N:=N+1;
WHILE k<N DO
c:=mas[k];
mas[k]:=mas[N];
mas[N]:=c;
k:=k+1;
END;
END L;
END Ex.




Числовой ненулевой массив, дано число L. Удалить число в позиции L массива. Пример 12345 L=4. Результат 1235
MODULE Ex;
IMPORT In, StdLog;
VAR
N, k, c, L:INTEGER;
flag:BOOLEAN;
mas:ARRAY 10 OF INTEGER;
In.Open;
In.Int(L);
PROCEDURE Kick*;
BEGIN
N:=-1;
k:=0;
WHILE k<N DO
N:=N+1;
In.Int(mas[k])
k:=k+1;
END;
END;

k:=0;
flag:=FALSE;
WHILE (k<N) & flag DO
IF mas[k]=L THEN
flag:=TRUE;
ELSE
k:=k+1;
END;
END;

k:=k;
WHILE k<N DO
IF k=(N-1) THEN
N:=N-1;
ELSE
mas[k]:=mas[k+1];
k:=k+1;
END;
END;
END Kick;
END Ex.