za asistenta: Evo stvarno attachmenta :) Izvinite
Pozdrav!
Program BacanjeNovcica;
type runda = record
brGenerisanih: 0..3;
ispitali:0..3; // br. onih koji su ispitali
// da li su pobedili, ili mozda nema // pobednika
novcici: array [1..3] of boolean;
kojipoRedu: 0..3; // brojac koji ce nam reci
// koji po redu je neki proces
// prosao await na nekoj barijeri.
end;
var: r: shared runda;
function Ucesnik (ID: 1..3): boolean // vraca: je li pobednik?
var: levi, desni, pobedio, nemaJosPobednika: boolean;
bacanje : boolean; // sta je dobio ucesnik na bacanju ovaj put
IDlevi, IDright: 1..3;
begin
pobedio:=false;
nemaJosPobednika:=true;
IDlevi:=ID mod 3 +1; IDdesni:=ID mod 3 + 2;
while (nemaJosPobednika) do begin
bacanje:=RANDOM(0,1);
region r do begin
novcici[ID]:=bacanje;
brGenerisanih:=brGenerisanih + 1;
await(brGenerisanih = 3);
kojiPoRedu:=kojiPoRedu mod 3 + 1;
if (kojiPoRedu=1) then ispitali:=0;
levi:=novcici[IDlevi];
desni:=novcici[IDdesni];
end;
pobedio:=bacanje <> levi AND bacanje <> desni;
nemajosPobednika:= bacanje=levi AND bacanje=desni;
if (nemaJosPobednika) then do begin
region r do begin
ispitali:=ispitali + 1;
await(ispitali=3);
kojiPoRedu:=kojiPoRedu mod 3 + 1;
if (kojiPoRedu=1)then
brGenerisanih:=0;
end;
end; // if
end; // while
Ucesnik:=pobedio; // f-ja vraca je li ucesnik pobedio
end; // procedure
begin
r.brGenerisanih:=0;
r.ispitali:=0;
r.kojiPoRedu:=0; // 0 mod 3 + 1 za prvog
cobegin
Ucesnik(1);
Ucesnik(2);
Ucesnik(3);
coend
end;
Program BacanjeNovcica;
type runda = record
brGenerisanih: 0..3;
ispitali:0..3; // br. onih koji su ispitali
// da li su pobedili, ili mozda nema // pobednika
novcici: array [1..3] of boolean;
kojipoRedu: 0..3; // brojac koji ce nam reci
// koji po redu je neki proces
// prosao await na nekoj barijeri.
end;
var: r: shared runda;
function Ucesnik (ID: 1..3): boolean // vraca: je li pobednik?
var: levi, desni, pobedio, nemaJosPobednika: boolean;
bacanje : boolean; // sta je dobio ucesnik na bacanju ovaj put
IDlevi, IDright: 1..3;
begin
pobedio:=false;
nemaJosPobednika:=true;
IDlevi:=ID mod 3 +1; IDdesni:=ID mod 3 + 2;
while (nemaJosPobednika) do begin
bacanje:=RANDOM(0,1);
region r do begin
novcici[ID]:=bacanje;
brGenerisanih:=brGenerisanih + 1;
await(brGenerisanih = 3);
kojiPoRedu:=kojiPoRedu mod 3 + 1;
if (kojiPoRedu=1) then ispitali:=0;
levi:=novcici[IDlevi];
desni:=novcici[IDdesni];
end;
pobedio:=bacanje <> levi AND bacanje <> desni;
nemajosPobednika:= bacanje=levi AND bacanje=desni;
if (nemaJosPobednika) then do begin
region r do begin
ispitali:=ispitali + 1;
await(ispitali=3);
kojiPoRedu:=kojiPoRedu mod 3 + 1;
if (kojiPoRedu=1)then
brGenerisanih:=0;
end;
end; // if
end; // while
Ucesnik:=pobedio; // f-ja vraca je li ucesnik pobedio
end; // procedure
begin
r.brGenerisanih:=0;
r.ispitali:=0;
r.kojiPoRedu:=0; // 0 mod 3 + 1 za prvog
cobegin
Ucesnik(1);
Ucesnik(2);
Ucesnik(3);
coend
end;
Previous by date: za asistenta: Resenje 2. og zadatka sa kolokvijuma
Next by date: Re: Za profesora i/ili asistenta
Previous by thread: za asistenta: Resenje 2. og zadatka sa kolokvijuma Next by thread: Vezbe (laboratorijske + na tabli)
Previous by thread: za asistenta: Resenje 2. og zadatka sa kolokvijuma Next by thread: Vezbe (laboratorijske + na tabli)