Написать программу на питоне, которая будет разбивать введённое количество долларов/рублей рандомно на монетки. например: пользователь ввел 39.51$, программа выводит: 39.51$ = 10 монет по 25 центов, 3 монеты по 1 центу и т.д.
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.
обязательно что б было 8 символов ,если будет меньше, то слева приписываешь 0 ) Затем переводишь маску в двоичную систему . (Покажу тебе на двух числах, если ты понял то что я написал выше , то с другими этого проделывать не надо , а если не понял , то делаешь так для каждого числа)
Затем просто переписываешь эти числа в два ряда
11100000 11000100 ( И пишешь 1 там где друг над другом стоят единицы) 11000000
Теперь переводишь это число в десятичную
Твой ответ . 12.16.192.0 (буквы думаю сам напишешь )
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
Затем просто переписываешь эти числа в два ряда
11100000
11000100 ( И пишешь 1 там где друг над другом стоят единицы)
11000000
Теперь переводишь это число в десятичную
Твой ответ . 12.16.192.0 (буквы думаю сам напишешь )