var sum,x:integer;
begin
x:=1;
while x<>0 do begin readln(x); sum:=sum+x; end;
writeln(sum);
end.
PascalABC.NET 3.7:
###RS.AdjacentGroup.SelectMany(x → x.Len >= 3 ? x.Len + x[0] : x.Str).PrПояснение:
RS - ReadString: Возвращает значение типа string, введенное с клавиатуры.
AdjacentGroup: Группирует одинаковые подряд идущие элементы, получая последовательность массивов.
SelectMany: Проецирует каждый элемент последовательности в новую последовательность и объединяет результирующие последовательности в одну последовательность.
.Len - .Length: Длина массива.
.Str - .JoinToString: Преобразует последовательность символов в строку, не используя разделитель (при последовательность другого типа данных в качестве разделителя используется пробел).
.Pr - .Print: Выводит последовательность символов на экран, не используя разделитель (при последовательность другого типа данных в качестве разделителя используется пробел).
Пример работы:
var
a, s: real;
begin
s:= 0;
repeat
writeln('Введите положительное число');
readln(a); //Вводим положительное число
if a < 0 then {Если введено не положительное число, печатаем сообщение об этом и начинаем цикл сначала}
begin
writeln('Введено не положительное число. Введите число еще раз.');
continue;
end;
s:= s + a;
until a = 0;
writeln('Сумма введенных чисел равна: ', s); //Выводим сумму
end.