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

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

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

5 + 6 -34 + 56  - 7 + 2

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

var i, sum, N, Code: integer;
     s, m, z: string;
begin
  z:=''; //хранит значение арефмитич знака +/-
  // m переменная текущего числа
  sum:=0; //переменная текущейсуммы по строке
  writeln('Vvedite stroku');
  readln(s);
  for i:=1 to length(s) do
    begin
      Val(s[i], N, Code);
      if Code=0 then
        m:=m+s[i]
      else if (s[i]='+') OR (s[i]='-') then
        begin
          if z = '' then //определение первого числа в строке
            begin
              Val(m, N, Code);
              sum:=N;  //сумма = первое число
              m:='';  //обнуляем строку числа
            end
          else   //если число не первое
             begin
               Val(m, N, Code);
               if z='+' then
                 sum:=sum+N
               else
                 sum:=sum-N;
               m:='';
             end;
          if s[i]='+' then
            z:='+'
          else
            z:='-';
        end;
      if i = length(s) then
        begin
          Val(m, N, Code);
          if z='+' then
            sum:=sum+N
          else
            sum:=sum-N;
        end;
      writeln(sum);
    end;
  writeln('= ',sum);
  readln();
end.
vedro-compota's picture

решение засчитано

_____________
матфак вгу и остальная классика =)