Задача 8 Урок 17

Задача 8 Урок 17:

На вход вашей программы подается строка вида:

5 + 6 -34 + 56  - 7 + 2

("сколько угодно" чисел с операциями суммы и разности в любом порядке). Вычислите результат (пробелов между символом операции и числом может и не быть)

var s, n: string;
    i, j, k, o, int, l, acc: integer;
    a: array of integer;
    b: array of char;
begin
  write('Введите арифметическое выражение: ');
  readln(s);
  l := length(s);
  for i := 1 to l + 1 do
   begin
    val(s[i], int, o);
    if o = 0 then n += s[i]
    else
     begin
      if n <> '' then
       begin
        j += 1;
        setlength(a, j);
        val(n, int, o);
        a[j-1] := int;
        n := '';
       end;
      if (s[i] = '+') or (s[i] = '-') then
       begin
        k += 1;
        setlength(b, k);
        b[k-1] := s[i];
       end;
     end;
   end;
  acc := a[0];
  for i := 1 to j - 1 do
   if b[i - 1] = '+' then acc += a[i]
   else acc -= a[i];
  writeln('Результат вычисления:  ', acc);
  readln();
end.