Należy napisać w języku C program Pascal
implementujący
jednowymiarową tablicę n+1
(n > 0
) procesów
generujących n
-ty wiersz trójkąta Pascala (por. np. http://pl.wikipedia.org/wiki/Tr%C3%B3jk%C4%85t_Pascala;
w treści zadania zakładamy, że wiersze trójkata Pascala są ponumerowane od
1). Tablica powinna zawierać jeden proces Pascal
oraz
n
procesów W.
Docelowo każdy z procesów
W(i)
dokonuje wyliczenia i
-tego współczynnika
n
-tego wiersza trójkąta.
Program Pascal
wywoływany jest z jednym parametrem n (n
>0)
określającym, który wiersz trójkąta Pascala ma zostać
wyliczony, po czym tworzona jest lista n
procesów W.
Proces Pascal
komunikuje się wyłącznie z procesem
W(1).
Każdy z procesów W(i)
, z wyjątkiem
pierwszego i ostatniego, komunikuje się z procesami W(i-1)
i
W(i+1).
Proces W(1)
komunikuje się z procesem
Pascal
oraz procesem W(2)
a proces
W(n)
z W(n-1).
Obliczenia odbywają się w n
krokach. Każdy i
-ty
krok obliczeń inicjowany jest przez proces Pascal
i obejmuje
i
kolejnych procesów: W(1), W(2), ... W(i)
.
Wyliczenie nowej wartości współczynnika k
(dla
k>1
i k<i)
polega na dodaniu do starej (czyli
wyliczonej w poprzednim kroku) wartości tego współczynnika , starej
wartości współczynnika procesu o numerze k-1.
Współczynniki o
numerach 1
i k
mają zawsze wartość
1.
Po wykonaniu wszystkich kroków obliczeń współczynniki przekazywane są w
odpowiedniej kolejności do procesu Pascal,
który wypisuje je na
standardowym wyjściu (można skorzystać z tego, że wiersze trójkąta
Pascala są symetryczne). Po zakończeniu obliczeń i przekazaniu wszystkich
koniecznych informacji, procesy W
kończą pracę. Proces
Pascal
kończy pracę po wypisaniu wyników.
Do komunikacji miedzy procesami wykorzystywane są wyłącznie łącza nienazwane. Komunikacja odbywa się dwukierunkowo.
Ustalenie szczegółów użytego protokołu komunikacyjnego należy do autora implementacji. Jego specyfikacja powinna zostać podana w oddzielnym pliku tekstowym.
Rozwiązania (tylko Makefile, pliki źródłowe i plik z opisem protokołu opis.txt) należy nadsyłać za pomoca skryptu submit na adres: solab@mimuw.edu.pl
W komentarzu w kodzie źródłowym nalezy umieścić dane autora (nazwisko, numer albumu).
Kod źródłowy powinien być w rozsądny sposób skomentowany.
Wszystkie procesy są zobowiązane do oczekiwania na zakończenie swoich potomków.
Należy bezwzględnie zamykać nieużywane deskryptory plików.
Należy sprawdzać poprawność wykonania funkcji systemowych.
Ostateczny termin nadsyłania rozwiązań to: 17 listopada 2014, godz. 23:59.
W przypadku wątpliwości można zadać pytanie autorowi zadania K. Szafranowi. Przed zadaniem pytania warto sprawdzić, czy odpowiedź na nie nie pojawiła się na liście często zadawanych pytań.