// PascalABC.NET 3.0, сборка 1128uses System.Text.RegularExpressions; begin var s:=' - 32 / - 21 '; s:=RegEx.Replace(s,'\s',''); var a:=RegEx.Matches(s,'(-{0,1}\d+)|[\+\-\*/]'); var n:=a.Count; var x,y:integer; var c:char; case n of 3:begin x:=StrToInt(a[0].ToString); y:=StrToInt(a[2].ToString); c:=a[1].ToString[1] end; 2:begin x:=StrToInt(a[0].ToString); var s1:=a[1].ToString; c:=s1[1]; s1[1]:='0'; y:=StrToInt(s1) end; else begin Writeln('Недопустимое выражение'); exit end end; WriteFormat('{0} {1} {2} = ',x,c,y); case c of '+':Writeln(x+y); '-':Writeln(x-y); '*':Writeln(x*y); '/':Writeln(x/y) endend.
Тестовое решение:-32 / -21 = 1.52380952380952// PascalABC.NET 3.0, сборка 1128begin var s:='4km-549_ffb)5)6'; var t:=s.Where(x->x in ['0'..'9']).JoinIntoString(''); var n:int64; if TryStrToInt64(t,n) then Writeln(2*n) else Writeln('Не удалось выделить число')end.
Тестовое решение:909912