Язык программирования RUBY Есть код, в котором необходимо добавить функцию, которая будет отвечать за раздевалку, в которую могут заходить b выходить только мужчины в количестве 2 человека, женщин пускать нельзя. require './semaphore_lib' class BathInOutControl def initialize @male = Semaphore.new(1) @female = Semaphore.new(1) @bath = Semaphore.new(1) @bathState = :neutral @people = 0 @maxpeople = 3 end # Функция входа мужчины в ванную комнату def GetInBathroomMale @male.up! @bath.up! if @bathState != :male && @people <= @maxpeople @bathState = :male @people += 1 @male.down! end # Функция выхода мужчины из ванной комнаты def GetOutBathroomMale @male.up! @people -= 1 @bathState = :neutral if @people == 0 @bath.down! if @people == 0 @male.down! end # Функция входа женщины в ванную комнату def GetInBathroomFemale @female.up! @bath.up! if @bathState != :female && @people <= @maxpeople @bathState = :female @people += 1 @female.down! end # Функция выхода женщины из ванной комнаты def GetOutBathroomFemale @female.up! @people -= 1 @bathState = :neutral if @people == 0 @bath.down! if @people == 0 @female.down! end end bathroom = BathInOutControl.new N = 4 N.times do Thread.new do sleep rand * 5 puts Thread.current.to_s + ' мужчина пытается войти в ванную комнату' bathroom.GetInBathroomMale puts Thread.current.to_s + ' мужчина вошёл в ванную комнату' sleep rand puts Thread.current.to_s + ' мужчина вышел из ванной комнаты' bathroom.GetOutBathroomMale end end N.times do Thread.new do sleep rand * 5 puts Thread.current.to_s + ' женщина пытается войти в ванную комнату' bathroom.GetInBathroomFemale puts Thread.current.to_s + ' женщина вошла в ванную комнату' sleep rand puts Thread.current.to_s + ' женщина вышла из ванной комнаты' bathroom.GetOutBathroomFemale end end Thread.list.each { |t| t.join unless t == Thread.main }
//Первый ввод - число, второй - система счисления
//Pascal ABC.NET v3.0
var
a,i,b,r,n,j,bug:integer;
s,se,slo,slof:string;
procedure preob(var a,b,n:integer; var se:string);
begin
repeat
b:=a mod n;
a:=a div n;
str(b,se);
s+=se;
until (a<=n-1);
end;
begin
readln(slo);
readln(n);
for j:=1 to length(slo) do
begin;
a:=ord(slo[j]);
preob(a,b,n,se);
str(a,se);
s+=se;
for i:=1 to length(s) div 2 do
begin;
se:=s[i];
s[i]:=s[length(s)-i+1];
s[length(s)-i+1]:=se[1];
end;
write(s,'-');
slof:=slof+s;
delete(s,1,length(s));
end;
end.
//Слово Программа она кодирует как 11001111-11110000-11101110-11100011-11110000-11100000-11101100-11101100-11100000-
Формулы площадей квадрата S₁ и круга S₂ известны, что легко позволяет нам найти нужное условие.
Если нужно, чтобы случай, когда квадрат вписан в круг тоже учитывался, строгое неравенство следует заменить нестрогим.
// PascalABC.NET 3.0, сборка 1160 от 05.02.2016
begin
var s1:=ReadReal('Площадь квадрата');
var s2:=ReadReal('Площадь круга');
if pi*s1<2*s2 then Writeln('Квадрат умещается в круге')
else Writeln('Квадрат не умещается в круге')
end.
Тестовое решение:
Площадь квадрата 24.6
Площадь круга 28.4
Квадрат не умещается в круге