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

Урок 15 задача 8

На вход вашей программы подается строка вида:
5 + 6 -34 + 56 - 7 + 2
("сколько угодно" чисел с операциями суммы и разности в любом порядке). Вычислите результат (пробелов между символом операции и числом может и не быть)

program U17Z8;
type
  a=array[1..6] of integer;
  b=array[1..5] of char;
var
  l:a;
  t:b;
  i,d,f,n,c,m: integer;
  s:string;
function Sieve(s:string; var t:b; var m:integer):a;
var p:integer;
var w:string;
begin
d:=1;
c:=1;
p:=1;
    for i:= 1 to length(s) do
    begin
      if (s[i]>='0')and(s[i]<='9') then
      begin
        w:=w+s[i];
        val(w,f);
        l[d]:=f;
        c:=p;
      end
      else if (s[i]<>' ') then
      begin
        t[c]:=s[i];
        d:=d+1;
        w:='';
        inc(p);
      end;
    end;
    m:=d;
    result:=l
end;
procedure AddSub(l:a);
begin
d:=1;
c:=1;
  if (t[c]='+') then
  begin
    n:=l[d]+l[d+1];
    d:=d+1;
    c:=c+1
  end
  else
  begin
    n:=l[d]-l[d+1];
    d:=d+1;
    c:=c+1;
  end;
  while (d<m) do
  begin
    if (t[c]='+') then
    begin
      n:=n+l[d+1];
      c:=c+1;
      d:=d+1;
    end
    else
    begin
      n:=n-l[d+1];
      c:=c+1;
      d:=d+1;
    end;
  end;
     writeln(n);
end;
begin
   readln(s);
   Sieve(s,t,m);
   AddSub(l);
   readln();
end.