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) end end.
Тестовое решение: -32 / -21 = 1.52380952380952
// PascalABC.NET 3.0, сборка 1128 begin 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.
begin; randomize; x:=windowwidth-300; y:=0; for i:=1 to 10 do begin; for j:=1 to 10 do begin; rectangle(x,y,x+a,y+a); x+=a; end; y+=a; x:=windowwidth-300; end; x:=random(1,10); y:=random(1,10); t:=0; while t<>10 do begin; readln(xt); readln(yt); if (xt<>x) and (yt<>y) then begin; xl:=windowwidth+xt*30-300; yl:=300-yt*30; cross(xl,yl,a); inc(t); end; if (xt=x) or (yt=y) then begin; xl:=windowwidth+xt*30-305; yl:=300-yt*30+4; floodfill(xl,yl,clBlue); inc(t); end; if (xt=x) and (yt=y) then begin; xl:=windowwidth+xt*30-305; yl:=300-yt*30+4; floodfill(xl,yl,clRed); writeln('Ты выиграл!'); break; end; end; if t=10 then begin; writeln('Ты проиграл!'); xl:=windowwidth+x*30-305; yl:=300-y*30+4; floodfill(xl,yl,clRed); end; end.
uses
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)
end
end.
Тестовое решение:
-32 / -21 = 1.52380952380952
// PascalABC.NET 3.0, сборка 1128
begin
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
GraphABC;
const
a=30;
var
xt,yt,x,y,i,j,t,xl,yl:integer;
procedure cross(x,y,a:integer);
begin;
setpencolor(clred);
line(x,y,x-a,y+a);
line(x-a,y,x,y+a);
setpencolor(clblack);
end;
begin;
randomize;
x:=windowwidth-300;
y:=0;
for i:=1 to 10 do
begin;
for j:=1 to 10 do
begin;
rectangle(x,y,x+a,y+a);
x+=a;
end;
y+=a;
x:=windowwidth-300;
end;
x:=random(1,10);
y:=random(1,10);
t:=0;
while t<>10 do
begin;
readln(xt);
readln(yt);
if (xt<>x) and (yt<>y) then
begin;
xl:=windowwidth+xt*30-300;
yl:=300-yt*30;
cross(xl,yl,a);
inc(t);
end;
if (xt=x) or (yt=y) then
begin;
xl:=windowwidth+xt*30-305;
yl:=300-yt*30+4;
floodfill(xl,yl,clBlue);
inc(t);
end;
if (xt=x) and (yt=y) then
begin;
xl:=windowwidth+xt*30-305;
yl:=300-yt*30+4;
floodfill(xl,yl,clRed);
writeln('Ты выиграл!');
break;
end;
end;
if t=10 then
begin;
writeln('Ты проиграл!');
xl:=windowwidth+x*30-305;
yl:=300-y*30+4;
floodfill(xl,yl,clRed);
end;
end.