Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package body Rozwiazanie is --cialo pakietu zadeklarowanego w rozwiazanie.ads
- task body SerwerSzkolen is --definicje i zmienne uzywane w programie
- gdzieWstawicPracownika : Integer := 1;
- dolaczeni : Integer := 0;
- aktualnaLista : ListaUczestnikow; -- zrobienie listy pracownikow
- resztaPracownikow : Integer := liczbaPracownikow mod rozmiarGrupy; --pozostali pracownicy
- pracownicyPoSzkoleniu : Integer := 0;
- czyKoniec : Boolean := false;
- --rzeczywiste dzialanie programu
- begin
- loop
- select
- when (gdzieWstawicPracownika <= rozmiarGrupy or gdzieWstawicPracownika <= resztaPracownikow) and liczbaPracownikow /= pracownicyPoSzkoleniu and czyKoniec = false =>
- accept Zapisz(id : Integer) do
- aktualnaLista(gdzieWstawicPracownika) := id;
- gdzieWstawicPracownika := gdzieWstawicPracownika + 1;
- Put_Line ("Pracownik sie zapisuje. Jego nr to: "& Integer'Image (id));
- end;
- or
- when czyKoniec = false and liczbaPracownikow /= pracownicyPoSzkoleniu and (gdzieWstawicPracownika > rozmiarGrupy or (gdzieWstawicPracownika > resztaPracownikow and pracownicyPoSzkoleniu = liczbaPracownikow - resztaPracownikow)) =>
- accept Dolacz(id: Integer; rozmiar: out Integer; uczestnicy: out ListaUczestnikow) do
- dolaczeni := dolaczeni + 1;
- uczestnicy := aktualnaLista;
- rozmiar := gdzieWstawicPracownika - 1;
- Put_Line ("Pracownik dolacza. Jego nr to: "& Integer'Image (id));
- if dolaczeni = rozmiarGrupy or (pracownicyPoSzkoleniu = (liczbaPracownikow - resztaPracownikow) and dolaczeni = resztaPracownikow) then
- czyKoniec := true;
- dolaczeni := 0;
- gdzieWstawicPracownika := 1;
- end if;
- end;
- or
- when czyKoniec = true and liczbaPracownikow /= pracownicyPoSzkoleniu=>
- accept Opusc(id: Integer) do
- pracownicyPoSzkoleniu := pracownicyPoSzkoleniu + 1;
- Put_Line ("pracownik wychodzi: "& Integer'Image (id) & " pracownicy po szkoleniu: "& Integer'Image (pracownicyPoSzkoleniu));
- if pracownicyPoSzkoleniu mod rozmiarGrupy = 0 then
- czyKoniec := false;
- end if;
- end;
- or when czyKoniec = true and pracownicyPoSzkoleniu = liczbaPracownikow =>
- terminate;
- end select;
- end loop;
- end SerwerSzkolen;
- end Rozwiazanie;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement