Вводится строка из букв и знаков латинского алфавита. Например: abc1;+;56;+9
А в ответе должно выдать сумму этих чисел 1+56+9=66.
Если записано так 1abc2def3, то выдаст ответ 123.
А если нету в строке чисел, то паскаль должен вывести 'Чисел нет'
Программа есть. Только я не могу сделать чтобы Паскаль выводил 'Чисел нет' У меня всегда выводит 'Чисел нет', либо уходит в бесконечный цикл.
Помогите пожалуйста.
Код:
uses crt;
const
number = ['0' .. '9'];
plus = ['+'];
var
value : real;
rezult : real;
i, err : integer;
sign : char;
s, a : string;
begin
writeln('Введите строку: ');
readln(s);
i := 1;
a := '';
sign := '+';
while i <= length(s) do
begin
while (i <= length(s)) and (not (s[i] in plus)) do
begin
if s[i] in number then a := a + s[i];
i:=i+1;
end;
val(a, value, err);
a := '';
if err <> 0 then value := 0;
if (i > length(s)) or (s[i] in plus) then
begin
case sign of
'+' : rezult := rezult + value;
end;
sign := s[i];
i:=i+1;
end;
end;
writeln('result = ', rezult);
end.