DLL
Wersja A
Przetworzenie danych z pliku z wykorzystaniem funkcji zawartej w bibliotece
DLL.
- Zadanie:
- stworzyć bibliotekę DLL z jedną funkcją (wg poniższej specyfikacji)
znajdującą odpowiedź na podany niżej problem algorytmiczny
- użyć dołączonego do zadania programu wywołującego funkcję o spodziewanym
nagłówku i sprawdzającego wynik oraz czas działania funkcji
- poprawność merytoryczna i estetyczna kodu będzie oceniana
- konieczne jest pisanie komentarzy, ich styl i jakość będzie
oceniana
- dokonać analizy (w komentarzu w kodzie) złożoności zaimplementowanego
algorytmu dla przypadku optymistycznego, średniego i pesymistycznego
danych wejściowych (wystarczy podać złożoności i bardzo krótko uzasadnić)
- jeśli najlepszy wymyślony algorytm przekracza możliwości czasowe
zajęć, zaimplementować prostszy, ten lepszy opisać krótko w komentarzu
- może to zostać policzone na plus
- na otrzymaną liczbę punktów będzie miała wpływ szybkość działania
zaimplementowanego algorytmu na tle wszystkich wyników oraz optymalność
wykorzystania pamięci
- w przypadku jednakowych wyników czasowych żaden program nie zostanie
oceniony maksymalnie
- alokacja niepotrzebnej pamięci będzie obniżała ocenę
- Opis problemu algorytmicznego:
- w pierwszej linii pliku wejściowego znajduje się liczba ciągów
znaków zawartych w pliku, w każdej następnej linii znajduje się
jeden ciąg znaków
- ciągów w pliku może być dowolnie dużo, każdy z nich ma co
najwyżej 255 znaków (długości ciągów mogą być różne)
- każdy ciąg składa się z małych liter oraz znaków '-' (minus)
- znaki '-' należy ignorować
- można założyć, że w każdym ciągu występuje co najmniej jedna
litera
- problem polega na znalezieniu liczby różnych ciągów występujących
w pliku (ignorując znaki '-')
- np. dla ciągów: "a-a", "aa-", "-aa",
"ba-", "ba", "--a" wynikiem powinna
być wartość 3
- Funkcja postaci:
- BOOL DoLab8( LPCTSTR
lpszInputFile, int *nResult );
gdzie:
- lpszInputFile
WEJŚCIE: nazwa pliku wejściowego zawierającego dane
- nResult
WYJŚCIE: wartość obliczona przez funkcję dla danych z podanego
pliku
- zwracana wartość: TRUE jeśli wartość została obliczona, FALSE
w przypadku błędów
- UWAGA: poprawnie obsłużyć wszystkie sytuacje awaryjne, np. brak
pliku lub błąd przydziału pamięci
- W dołączonym do zadania pliku ZIP znajdują
się następujące pliki:
- Lab8Tester.exe - program wczytujący wskazaną bibliotekę DLL, sprawdzający
istnienie funkcji wg powyższego nagłówka i wykonujący funkcję dla
danych zawartych w plikach test1.dat, test2.dat, test3.dat
- wszystkie potrzebne opcje znajdują się w menu
- wczytywanie funkcji z DLL'a odbywa się w następujący sposób:
LoadLibrary( sDLLName
);
GetProcAddress( hDLL, "DoLab8" );
- UNICODE nie jest wykorzystywany
- test1.dat, test2.dat, test3.dat - przykładowe pliki z danymi wejściowymi
wykorzystywanymi przez program Lab8Tester.exe