
Untitled
By: a guest on
Apr 8th, 2012 | syntax:
Delphi | size: 1.37 KB | hits: 22 | expires: Never
{$o-,r+,q+}
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
kol, i, z, pos: integer;
s: string;
find: boolean;
procedure calc(s: string; cnt, last: integer);
var
o1, o2: string;
k, x, y, i, err: integer;
begin
if (cnt = kol + 1) then
exit;
k := -1;
err := -1;
if (cnt <> 1) then begin
i := last + 1;
while (s[i] <> '+')and (s[i] <> '-') and (i < length(s)) do
i := i + 1;
if (i = length(s)) then
pos := i
else
pos := i - 1;
end;
if (cnt = 1) then begin
for i := last to pos do
if (s[i] = '+') or (s[i] = '-') then
k := i;
end else
k := last;
if (cnt = 1) then begin
o1 := copy(s, 1, k - 1);
val(o1, x, err);
end else
x := z;
o2 := copy(s, k + 1, pos - k);
val(o2, y, err);
case s[k] of
'+': z := x + y;
'-': z := x - y;
end;
calc(s, cnt + 1, pos + 1);
end;
begin
assign(input, 'inp.in');
assign(output, 'outp.out');
reset(input);
rewrite(output);
readln(s);
kol := 0;
z := 0;
pos := length(s);
find := false;
for i := 1 to length(s) do begin
if (s[i] = '+') or (s[i] = '-') then
kol := kol + 1;
if (kol = 2) and (not find) then begin
pos := i - 1;
find := true;
end;
end;
calc(s, 1, 1);
write(z);
close(input);
close(output);
end.