Zadania na ćwiczenia

Zadanie 1 - max 8 punktów.

W firmie pracuje kilka osób. Któraś z nich zabezpieczyła hasłem dostęp do komputera z danymi o wynalazku.
Wiadomo, że hasło zawiera inicjały osoby i następujące po nich 6 cyfr.
Dwie siatki szpiegowskie próbują złamać hasło.
Jedna  z nich stosuje automatyczny kod, który generuje wszystkie możliwe kombinacje: inicjały i sześć dowolnych cyfr, opierając się przy tym tylko na znajomości inicjałów pracowników.
Druga uzyskała informację, że cyfry zawsze oznaczają RRMMDD - rok, miesiąc, dzień urodzenia pracownika i próbuje złamać hasło "ręcznie", wprowadzając kolejne możliwe warianty hasła.

Napisać program, który:

A. na podstawie podanego zestawu pracowników i informacji o ich datach urodzenia losowo generuje haslo w postaci xxRRMMDD, gdzie xx - inicjały, RR - rok, MM- miesiąc, DD - dzień urodzaniea  i zamyka tym haslem dostęp do danych,

B. generuje automatycznie kolejno wszystkie możliwe hasła, opierając się tylko na informacji o inicjałach pracowników oraz że hasło po inicjałach zawiera sześć dowolnych cyfr i sprawdza, czy któreś z nich pasuje do prawdziwego hasła, jeśli tak, to program kończy działanie i wypisywane jest prawdziwe haslo (tak działa siatka szpiegowska nr 1).

C. w pętli pyta użytkownika o  haslo, użytkownik próbuje je zgadnąć, opierając się na dodatkowych informacjach (tak działa siatka szpiegowska 2).
 
Część B należy zrealizowac jako działąjącą współbieżnie z częścią C.

Należy przy tym spróbować podzielić pracę w części B pomiędzy wątki, których liczba podawana jest jako argument wywołania aplikacji. Należy zmierzyć czas odnalezienia hasła w sytuacjach, gdy w części B zajmuje się tym jeden wątek, albo 2 albo 10, albo 100 albo jeszcze inna ich liczba. Sprawdzić co ew. jest potrzebne, by większa liczba wątków szybciej mogła odnaleźć właściwe hasło. Zapewnić też, by wraz z wątkami części B działała równocześnie  część dialogowa C.

Uwaga: podzielić kod pomiędzy klasy, odpowiadające jego funkcjonalnym częściom - np. pracownicy, zasób zamknięty hasłem, automatyczny generator i sprawdzaacz haseł, część dialogowa.


Zadanie dodatkowe - dla zainteresowanych ( 4 punkty)

Najprostszy animowany (przesuwający się) napis.
Na życzenie będzie objaśnione na ć2wiczeniach z podaniem kilku informacji o GUI i wykreślaniu tekstów.