Напишите программу в синтаксисе Free Pascal или Turbo Pascal, которая вычисляет выражение, состоящее из чисел и знаков (допускаются только знаки «+» или «–», количество чисел и знаков не ограничено). Выражение вводится как символьная строка, все числа целые. ввод: 12+42-44-12-13+1-23 вывод: -37 ввод: 12-53-2+23+0-25 вывод -45
function CalcExpression(expr: string): integer; var num, i: integer; sign: char; begin num := 0; sign := '+';
for i := 1 to Length(expr) do begin if (expr[i] >= '0') and (expr[i] <= '9') then begin num := num * 10 + Ord(expr[i]) - Ord('0'); end else begin case sign of '+': begin Result := Result + num; num := 0; end; '-': begin Result := Result - num; num := 0; end; end; sign := expr[i]; end; end;
case sign of '+': Result := Result + num; '-': Result := Result - num; end; end;
var expression: string; begin writeln('Enter an expression: '); readln(expression); writeln('Result: ', CalcExpression(expression)); end.
program CalculateExpression;
function CalcExpression(expr: string): integer;
var
num, i: integer;
sign: char;
begin
num := 0;
sign := '+';
for i := 1 to Length(expr) do
begin
if (expr[i] >= '0') and (expr[i] <= '9') then
begin
num := num * 10 + Ord(expr[i]) - Ord('0');
end
else
begin
case sign of
'+': begin
Result := Result + num;
num := 0;
end;
'-': begin
Result := Result - num;
num := 0;
end;
end;
sign := expr[i];
end;
end;
case sign of
'+': Result := Result + num;
'-': Result := Result - num;
end;
end;
var
expression: string;
begin
writeln('Enter an expression: ');
readln(expression);
writeln('Result: ', CalcExpression(expression));
end.