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.