repeat
Writeln('Inserte numeros');
Readln(numero);
resultado = resultado + numero;
until numero<=0;
end.
Imagino que has hecho lo que he hecho yo en el codigo anterior, el problema viene cuando "numero" es valor negativo, ya que la variable que acumula operará con ese numero negativo, es decir el resultado final se verá afectado acausa de que operara el numero negativo antes del UNTIL.
Notese que al ser 0 da igual, porque no altera el resultado final.
Ese problema lo puedes solventar añadiendo un IF o while, incluso puedes anidar otro REPEAT. Aquí el ejemplo:
program ej;
var
numero:integer;
resultado:integer;
begin
resultado = 0;
numero = 0;
repeat
Writeln('Inserte numeros');
Readln(numero);
if numero >0 then
begin
resultado = resultado + numero;
end
until numero<=0;
end.
Problema resuelto.