обязательно что б было 8 символов ,если будет меньше, то слева приписываешь 0 ) Затем переводишь маску в двоичную систему . (Покажу тебе на двух числах, если ты понял то что я написал выше , то с другими этого проделывать не надо , а если не понял , то делаешь так для каждого числа)
Затем просто переписываешь эти числа в два ряда
11100000 11000100 ( И пишешь 1 там где друг над другом стоят единицы) 11000000
Теперь переводишь это число в десятичную
Твой ответ . 12.16.192.0 (буквы думаю сам напишешь )
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.
11
Объяснение:
Расстояние между двумя точками равно
d=![\sqrt{(x2-x1)^{2}+(y2-y1)^{2} }](/tpl/images/1103/3373/ded0a.png)