procedure Work (var M:mas; N:integer);
var i,b,sym,ost:integer; f:boolean;
begin
for i:=1 to N do
begin f:=true; sym:=0; ost:=0;
b:=m[i];
repeat
ost:=b mod 10;
sym:=sym + ost;
b:=b div 10;
until b=0;
if sym mod 2=0 then f:=false;
if (f=true) and (sqrt(m[i]) in kor) then m[i]:=m[i+1];
end;
end;

исправил while на repeat, на счет полн. квад. завел константу чисел kor=[1..178] который при возведении в квадрат <=32000 ток чот у меня не проверяет условие sqrt (m[i]) in kor выдает operand types do not match operator, и еще хотел спросить как оформить правильно удалении элемента из массива, как у меня или мож m[i]:=0.