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

Урок 18

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

5 + 6 -34 + 56  - 7 + 2

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

var inputString: string;

function algebra(num1, num2: integer; char1: string): integer;

begin
  if (char1 = '+') then
    result := num1 + num2
  else if (char1 = '-') then
    result := num1 - num2;
end;

function getNumsAndChar(inputString: string): integer;

  var num1, num2, loopCount, errorCode: integer;
      char1: string;
      toString2: string;
      flag: boolean;

begin
  num1 := 0;
  num2 := 0;
  flag := false;
  toString2 := '';
  char1 := '+';
  for loopCount := 1 to length(inputString) do
  begin
    if (inputString[loopCount] >= '0') and (inputString[loopCount] <= '9') then
    begin
      toString2 := toString2 + inputString[loopCount];
      flag := true;
    end
    else if flag and (inputString[loopCount] <> ' ') then
    begin
      flag := false;
      val(toString2, num2, errorCode);
      num1 := algebra (num1, num2, char1);
      toString2 := '';
    end;
    if (inputString[loopCount] = '-') then
    begin
      char1 := '-';
      flag := false;
    end
    else if (inputString[loopCount] = '+') then
    begin
      char1 := '+';
      flag := false;
    end;
  end;
  val(toString2, num2, errorCode);
  result := algebra (num1, num2, char1);
end;

begin
  writeln('Введите строку');
  readln(inputString);
  writeln(getNumsAndChar(inputString));
  readln();
end.

КОНСОЛЬ

Введите строку
100 +   5   -   7   -   5   +   7
100
vedro-compota's picture

засчитано

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