Milana1117464
22.02.2022 16:32

Язык программирования 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 }

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
23redalice11
03.02.2020 10:21
Ну, в общем, лови решение.

{ FreePascal 2.6.4}
program test;
uses
    crt;
var
    a, b, c, d  : integer;
    f : longint;

procedure swap (var x : integer; var y : integer);
var z : integer;
begin
    z := x;
    x := y;
    y := z;
end;

function nod (m, n : integer) : integer;
begin
    while m<>n do begin
        if m>n
        then
            m:=m-n
        else
            n:=n-m;
    end;
    nod := m;
end;

function max (a,b : integer) : integer;
begin
    if a>b
    then max := a
    else max := b;
end;

function min (x, y, z : integer) : integer;
var m : integer;
begin
    m := x;
    if y<m then m := y;
    if z<m then m := z;
    min := m;
end;

function mypow (a, b : integer) : integer;
var e, f : integer;
begin
    f := 1;
    for e:=1 to b do f := f*a;
    mypow := f;
end;

function fact(a : integer) : longint;
var
    i : integer;
    res : longint;
begin
    res := 1;
    for i := 1 to a do res := res*i;
    fact := res;
end;

begin
    clrscr;
    writeln('Test of function SWAP');
    write('Input A: ');
    readln(a);
    write('Input B: ');
    readln(b);
    swap(a, b);
    writeln('A=', a, ', B=', b);
    writeln;

    writeln('Test of function NOD');
    write('Input A: ');
    readln(a);
    write('Input B: ');
    readln(b);
    c := nod(a, b);
    writeln('NOD(', a, ',', b, ')=', c);
    writeln;

    writeln('Test of function MAX');
    write('Input A: ');
    readln(a);
    write('Input B: ');
    readln(b);
    c := max(a, b);
    writeln('MAX(', a, ',', b, ')=', c);
    writeln;

    writeln('Test of function MIN');
    write('Input A: ');
    readln(a);
    write('Input B: ');
    readln(b);
    write('Input C: ');
    readln(c);
    d := min(a, b, c);
    writeln('MIN(', a, ',', b, ',', c, ')=', d);
    writeln;

    writeln('Test of function POW');
    write('Input A: ');
    readln(a);
    write('Input B: ');
    readln(b);
    c := mypow(a, b);
    writeln('POW(', a, ',', b, ')=', c);
    writeln;

    writeln ('Test of function FACT (not large than 12!)');
    write('Input A: ');
    readln(a);
    f := fact(a);
    writeln(a, '!=', f);
    writeln;
    readkey;

end.
0,0(0 оценок)
Ответ:
uchenik91
11.02.2022 16:38

По аксонометрической проекции предмета построить чертеж в трех видах, нанести размеры.

ОбъяПо аксонометрической проекции предмета построить чертеж в трех видах, нанести размеры.снение:

По аксонометрической проекции предмета построить чертеж в трех вПо аксонометрической проекции предмета построить чертеж в трех видах, нанесПо аксонометрической проекции предмета построить чертеж в трех видах, нПо аксонометрической проекции предмета построить чертеж в трех видах, нанести размеры.анести размеры.ти размеры.идах, нанести размеры.

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота