[ Bizzare Contact @ 16.05.2009. 11:42 ] @

Dobro sam proguglao i nisam uspeo naci resenje u c#, bio bih zahvalan ako neko ima slobodnog vremena i znanja da mi prevede ovo z Pascala u c#.

Zadatak 10. Cigarette Smokers' problem
Koristeći uslovne kritične regione napisati program koji rešava problem i
simulira
sistem "nervoznih pušača" (Cigarette Smokers' problem). Postoji jedan agent
i tri nervozna
pušača. Agent poseduje rezerve tri neophodna predmeta za lečenje nervoze:
papir, duvan i
šibice. Jedan od pušača ima beskonačne zalihe papira, drugi - duvana, a
treći - šibica.
Agent počinje tako što dva različita predmeta stavlja na sto, jedan po jedan.
Pušač, kome
baš ta dva predmeta fale, uzima ih, zavija i pali cigaretu i uživa. Nakon
toga obaveštava
agenta da je završio, a agent onda stavlja dva nova predmeta na sto, itd.


program CigaretteSmokers(input, output);
type table = record
paper, tobacco, matches : boolean;
ok : boolean;
end;
var p: shared table;
procedure Agent;
var n : integer;
begin
while (true) do
begin
n := RANDOM(0, 2);
region p do
begin
case n of
0: begin
p.paper := false;
p.tobacco := true;
p.matches := true;
end;
1: begin
p.paper := true;
p.tobacco := false;
p.matches := true;
end;
2: begin
p.paper := true;
p.tobacco := true;
p.matches := false;
end;
else ;
end;
region p do
await(p.ok);
p.ok := false;
end;
end;
end;
procedure smocker_with_Matches;
begin
while (true) do
begin
region p do
begin
await(p.paper and p.tobacco);
p.paper := false;
p.tobacco := false;
end;
enjoy;
region p do
p.ok := true;
end;
end;
procedure smocker_with_Tobacco;
begin
while (true) do
begin
region p do
begin
await(p.paper and p.matches);
p.paper := false;
p.matches := false;
end;
enjoy;
region p do
p.ok := true;
end;
end;
procedure smocker_with_Paper;
begin
while (true) do
begin
region p do
begin
await(p.matches and p.tobacco);
p.matches := false;
p.tobacco := false;
end;
enjoy;
region p do
p.ok := true;
end;
end;
begin
p.paper := false;
p.tobacco := false;
p.matches := false;
p.ok := false;
cobegin
Agent;
smocker_with_Paper;
smocker_with_Tobacco;
smocker_with_Matches;
coend;
end.


Citat:

6. Ne tražite da Vam neko radi domaći zadatak

Ne očekujte da bilo ko obavezno odradi sav posao umesto Vas! Rado ćemo pomoći oko svakog problema u slučaju da Vam "gori pod nogama", pred neki ispit ili posao, ali morate da pokažete na delu da ste u stvari krenuli sa radom i zastali pošto ne znate kako dalje. Ako samo navedete zadatak i specifikacije, u zavisnosti od raspoloženja članova na forumu, možda će se naći neko da odradi kompletan posao, ali pošto to zavisi od entuzijazma samih članova, ne postoji garancija da će se i dogoditi! [ES] posetioci će Vam pomoći da bolje SHVATITE problem sa kojim ste suočeni, ali ponešto morate i sami da uradite!


Napakovala mi se gomila seminarskih radova za ovu nedelju, ovaj zadatak uopste ne kontam jer nisam pratio vezbe vezane za semafore. Ukoliko neko moze da mi pomogne super, ako ne onda jbg pokusao sam. :D

Hvala unapred. ;)