Булевская переменная говорит о том, чередуются ли символы. Если в какой-нибудь момент произведение текущего и предыдущего числа будет больше нуля (a * b > 0 только если знаки совпадают), то присваиваем переменной ложь.
var
a, b: integer;
c: boolean;
begin
b := 0;
c := true;
read(a);
while a <> 0 do
begin
if a * b > 0 then c := false;
b := a;
read(a);
end;
if c then writeln('Знаки чередуются')
else writeln('Знаки не чередуются')
end.