Zadanie 1: Statki : Stworzyć prostą grę w statki dla dwóch graczy w trybie graficznym, wykorzystując bibliotekę ncurses. 1. możliwość grania jednocześnie dwóch graczy 2. możliwość konfiguracji rozmiaru planszy (z poziomu pliku konfiguracyjnego) 3. możliwość konfiguracji liczby statków i ich rozmiarów (z poziomu pliku konfiguracyjnego) 4. sprawdzanie czy jest już koniec gry jeśli tak to wyświetlenie odpowiedniego komunikatu Poza zakresem tego zadanie jest: 1. implementacja logiki związanej z graniem z komputerem 2. ładna obróbka graficzna (wystarczy proste okienko z np. Krzyżykami) Komunikacja pomiędzy zawodnikami powinna odbywać się za pomocą pliku tekstowego, za pomocą którego będą przekazywane komunikaty pomiędzy graczami. Gra ma się odbywać na jednym komputerze.
Zadanie 2: Kółko i krzyżyk : Stworzyć prostą grę w kółko i krzyżyk w trybie graficznym, wykorzystując bibliotekę ncurses. 1. możliwość grania jednocześnie dwóch graczy 2. możliwość konfiguracji rozmiaru planszy (z poziomu pliku konfiguracyjnego) 3. sprawdzanie czy jest już koniec gry jeśli tak to wyświetlenie odpowiedniego komunikatu Poza zakresem tego zadanie jest: 1. implementacja logiki związanej z graniem z komputerem 2. ładna obróbka graficzna (wystarczy proste okienko z np. Krzyżykami i kółkami) Komunikacja pomiędzy zawodnikami powinna odbywać się za pomocą pliku tekstowego, za pomocą którego będą przekazywane komunikaty pomiędzy graczami. Gra ma się odbywać na jednym komputerze.
Zadanie 3: Kulki : Stworzyć prostą grę kulki dla jednego gracza. Gra polega na zmienianiu pozycji kulek na planszy w wymiarze kwadratu, aby ułożyć w jednym kierunku kulki tego samego koloru. Jak zostanie ułożona odpowiednia długość komputer powinien usunąć kulki z planszy. 1. gra dla jednej osoby 2. komputer losowo wybiera wolne miejsce i kolor kulki do wstawienia 3. komputer kończy grę jak nie będzie wolnego miejsca 4. użytkownik każdorazowo podaje kulkę do przesunięcia oraz miejsce docelowe (np. Za pomocą współrzędnych) 5. Plik konfiguracyjny powinien zawierać następujące parametry: 1. rozmiar planszy 2. liczba różnych kulek 3. długość kulek, jaka musi zostać ułożona, aby komputer usunął te kulki z planszy Poza zakresem zadania jest: 1. Implementacja algorytmu sprawdzania czy można przesunąć daną kulkę na wskazane miejsce (tj. czy istnieje ścieżka pomiędzy tymi punktami). 2. Ładna grafika (kulki mogą być oznaczane różnymi literami alfabetu, bądź cyframi)
Zadanie 4: Translator alfabetu Morse'a : Należy stworzyć program do zamieniania tekstu na alfabet Morse'a i do odkodowywania alfabetu Morse'a na tekst. Program ma działać w trybie tekstowym. Wszystkie informacje na temat alfabetu Morse'a dostępne są m.in na http://pl.wikipedia.org/wiki/alfabet_morse'a Program powinien działać również w trybie wsadowym. Po uruchomieniu programu można załadować odpowiedni plik wejściowy. Program wynik powinien zapisywać w pliku o nazwie podobnej do nazwy pliku źródłowego dodając prefix OUT_ 1. Możliwość zamiany tekstu na alfabet Morse'a i w drugą stronę 2. Praca w dwóch trybach: wpisywania wejścia z klawiatury oraz podając nazwę pliku (można ustalić jeden katalog do wstawiania plików 3. Zapis wyników dla trybu wsadowego 4. Obsługa sytuacji wyjątkowych błędne pliki 5. Plik konfiguracyjny w którym będzie można skonfigurować znaki odpowiadające długim i krótkim sygnałom Atutem będzie zaimplementowanie sprawdzania czy teksty zawarte w dwóch plikach (jeden zapisany alfabetem Morse'a, a drugi zwykłym tekstem) mają taką samą treść.
Zadanie 5. Prawo jazdy Należy stworzyć prosty program do testowania kandydatów na prawo-jazdy w trybie tekstowym. Program powinien losować n pytań z 3 odpowiedziami z wcześniej przygotowanej bazy danych. Każde pytanie zawiera trzy możliwe odpowiedzi przy czym tylko jedna odpowiedź jest poprawna. Program powinien działać w dwóch trybach: 1. testowy każde pytanie z n zadawane jest tylko raz i jest liczona pełna liczba punktów i czas pisania testujących. Po każdej odpowiedzi program przechodzi do następnego pytania bez informowania użytkownika czy odpowiedział poprawnie czy nie. Na końcu listowana jest statystyka z następującymi danymi 1. łączny czas wykonywania testujących 2. liczba prawidłowych i nieprawidłowych odpowiedzi 3. lista zadanych pytań: 1. z info o poprawnej odpowiedzi 2. z info o odpowiedzi jaką podał użytkownik 3. z info czy odpowiedź została uznana przez system Dodatkowo w tym trybie użytkownik będzie miał ograniczony czas na wykonanie testu. 2. nauki każde pytanie z n zadawane jest aż do uzyskania poprawnej odpowiedzi (jak użytkownik odpowie źle to to pytanie ląduje na końcu kolejki pytań do zadania i po zakończeniu serii pytań jest zadawane ponownie. W tym trybie po każdej odpowiedzi komputer podaje informację czy jest to prawidłowa odpowiedź czy nie. W przypadku podania przez użytkownika błędnej odpowiedzi komputer wskazuje poprawną odpowiedź. Na końcu pokazywana jest statystyka z następującymi danymi: 1. łączny czas wykonywania testu 2. lista pytań z liczbą prób trafień Plik konfiguracyjny powinien zawierać: 1. liczbę pytań jaka powinna zostać zadana w każdym teście 2. czas wykonania jednego testu (podany w sekundach) Baza pytań powinna być zapisana w przyjaznym formacie w pliku txt bądź xml-u. Przy każdym pytaniu powinny być zapisane możliwe odpowiedzi z informacją która odpowiedź jest poprawna.
Zadanie 6. Program księgowy Należy stworzyć prosty program księgowy do prowadzenie wpisów kosztów dla pracowników jednej firmy. Program powinien działać w trybie tekstowym i zapisywać dane o wszystkich osobach prowadzących ewidencję oraz o wszystkich jego wydatkach. Nie jest konieczne liczenie miesięcznych kosztów. 1. Możliwość dodawania, usuwania pracowników z księgowości 2. Możliwość dodawania, edycji wpisów kosztów 3. Pracownik powinien posiadać następujące atrybuty: 1. imię 2. nazwisko 3. data urodzenia 4. stanowisko 4. Koszt powinien posiadać następujące atrybuty: 1. nazwa kosztu (np. Opłata za biuro) 2. data księgowania (format: rrrr-mm-dd) 3. kwota 5. Koszt można edytować 6. Przy usunięciu pracownika są usuwane również jego koszty 7. Program powinien na początku sczytywać wszystkie dane z pliku tekstowego bądź xml 8. Program powinien mieć możliwość zapisywania danych podczas pracy po każdej modyfikacji 9. Plik tekstowy musi być zapisany w przyjaznym formacie, aby prowadzący mógł go 10. Każdy koszt jest przywiązany do jednego pracownika (należy każdemu pracownikowi przyporządkować unikalny identyfikator i zapisywać go przy każdym jego koszcie. 11. Możliwość przeglądania kosztów wybranej osoby oraz listowanie wszystkich osób
Zadanie 7. Biblioteka Należy stworzyć prosty program wspomagający pracę biblioteki. Program w pliku tekstowym lub xml powinien zapisywać następujące rzeczy: 1. osoby korzystające z biblioteki (imię, nazwisko, wiek, telefon kontaktowy) 2. książki dostępne w bibliotece (tytuł, autor, rok, wydania) 3. informacje jakie książki wypożyczyła dana osoba i informacje które książki są dostępne Każda osoba może wypożyczyć dowolną liczbę książek. Każda książka może być na raz wypożyczona przez jedną osobę. W celu powiązania książki z osobą należy dodać do klasy książka atrybut id_osoby (jak będzie null to znaczy że książka jest wolna) jest to rozwiązanie niezbyt ładne, ale wystarczające na potrzeby tego programu. 1. Możliwość dodawania, usuwania osób 2. Możliwość dodawania, edycji książek 3. Możliwość listowania wszystkich książek (z informacją które są zajęte), oraz listowanie wolnych książek 4. Listowanie książek, które wypożyczyła dana osoba 5. Symulowanie pożyczania / oddawania książek 6. Usunięcie osoby z biblioteki możliwe jest tylko wtedy gdy odda wszystkie książki. 7. Program powinien mieć możliwość zapisywania danych podczas pracy po każdej modyfikacji 8. Plik tekstowy musi być zapisany w przyjaznym formacie, aby prowadzący mógł go
Zadanie 8. Gra w kropki zaliczeniem kilkustronicowej dokumentacji technicznej wykonanego programu. Nie ma potrzeby Należy stworzyć prostą grę w kropki dla jednej osoby. Osoba będzie grała z komputerem. Komputer nie musi posiadać żadnej logiki związanej ze strategicznym rozstawianiem kropek. Program powinien działać w środowisku graficznym z wykorzystaniem biblioteki ncurses (bądź innej biblioteki graficznej C++). 1. Konfigurowalna plansza 2. Możliwość zapisania stanu gry i wczytania go ponownie 3. Możliwość przerwania gry w każdym momencie z możliwością zapisania stanu gry Poza zakresem zadania jest: 1. Ładna grafika 2. Implementacja algorytmu do inteligentnego stawiania kropek przez komputer
Zadanie 9. Terminarz zaliczeniem kilkustronicowej dokumentacji technicznej wykonanego programu. Nie ma potrzeby Należy stworzyć prosty program do zapisywania spotkań dla jednej osoby. Program przy każdorazowym uruchomieniu pobierałby wszystkie spotkania z pliku tekstowego bądź xml. 1. Możliwość dodawania, edycji, usuwania spotkań 2. Atrybuty spotkania: 1. czas (dzień, godzina rozpoczęcia, zakończenia) 2. miejsce (ulica, miasto) 3. z kim (imię nazwisko) 4. notka (informacje dodatkowe dowolnie długi ciąg znaków) 3. Możliwość listowania spotkań w następujących trybach: 1. wszystkie spotkania sortowanie po dacie 2. spotkania z danego przedziału czasowego 3. spotkania z dnia dzisiejszego 4. Program powinien mieć możliwość zapisywania danych podczas pracy po każdej modyfikacji 5. Plik tekstowy musi być zapisany w przyjaznym formacie, aby prowadzący mógł go 6. Program musi sprawdzać czy termin spotkania nie jest już zajęty jak jest musi uniemożliwiać wstawienie spotkania i znaleźć najbliższy termin w którym to spotkanie może się odbyć i zapytać się użytkownika czy ten termin mu pasuje. Poza zakresem zadania jest: 1. tryb graficzny 2. obsługa terminarza dla wielu osób
Zadanie 10. Lista TODO zaliczeniem kilkustronicowej dokumentacji technicznej wykonanego programu. Nie ma potrzeby Należy stworzyć prosty program do zapisywania listy TODO dla wielu osób. Program przy każdorazowym uruchomieniu pobierałby wszystkie TODO i użytkowników z pliku tekstowego bądź xml. 1. Możliwość dodawania, edycji, usuwania TODO 2. Atrybuty stodo: 1. nazwa todo 2. priorytet 3. notka (informacje dodatkowe dowolnie długi ciąg znaków) 3. Możliwość listowania listy TODO w następujących trybach: 1. wszystkie TODO 2. todo danego użytkownika 4. Program powinien mieć możliwość zapisywania danych podczas pracy po każdej modyfikacji 5. Plik tekstowy musi być zapisany w przyjaznym formacie, aby prowadzący mógł go Poza zakresem zadania jest: 1. tryb graficzny
Zadanie 11. Wykresy zaliczeniem kilkustronicowej dokumentacji technicznej wykonanego programu. Nie ma potrzeby Należy stworzyć prosty program do rysowania wykresów z wykorzystaniem jednej z bibliotek graficznych języka C++. Program powinien wczytywać dane wykresu z pliku testowego lub xml. Wykres powinien być modyfikowany podczas pracy programu przez odpowiedni interfejs użytkownika. 1. Możliwość tworzenia wykresu 2. Możliwość modyfikacji wykresu 3. Możliwość zapisywania wykresu 4. Program powinien mieć możliwość zapisywania danych podczas pracy po każdej modyfikacji 5. Plik tekstowy musi być zapisany w przyjaznym formacie, aby prowadzący mógł go Poza zakresem zadania jest: 1. ładny tryb tryb graficzny
Zadanie 12. Szyfr Vigenère'a i Cezara zaliczeniem kilkustronicowej dokumentacji technicznej wykonanego programu. Nie ma potrzeby Należy stworzyć prosty program do szyfrowania wykorzystujący dwie metody szyfrowania: Szyfr Vigenère'a i Cezara. Program powinien działać w dwóch trybach: szyfrowania i deszyfrowania. 1. Możliwość szyfrowania / deszyfrowania tekstu zapisanego w pliku tekstowym 2. Możliwość szyfrowania / deszyfrowania tekstu podanego na wejście 3. Program powinien mieć możliwość zapisywania wyników szyfrowania / deszyfrowania do pliku tekstowego po każdej operacji 4. Plik tekstowy musi być zapisany w przyjaznym formacie, aby prowadzący mógł go Opis szyfrów dostępny jest na Wikipedii: http://pl.wikipedia.org/wiki/szyfr_cezara http://pl.wikipedia.org/wiki/szyfr_vigen%c3%a8re%27a
Zadanie 13. Histogram zaliczeniem kilkustronicowej dokumentacji technicznej wykonanego programu. Nie ma potrzeby Należy stworzyć aplikację, która będzie rysowała histogramy na konsoli z wykorzystaniem biblioteki ncurses. 1. Możliwość wczytywania danych wejściowych z pliku tekstowego 2. Możliwość zapisywania danych do pliku tekstowego 3. Możliwość podawania danych z poziomu konsoli 4. Plik tekstowy musi być zapisany w przyjaznym formacie, aby prowadzący mógł go Histogram: http://pl.wikipedia.org/wiki/histogram
Zadanie 14. Biuro podróży Należy stworzyć prosty program wspomagający biuro podróży. Program w pliku tekstowym lub xml powinien zapisywać następujące rzeczy: 1. osoby korzystające z biura podróży (imię, nazwisko, wiek, telefon kontaktowy) 2. wycieczki dostępne w biurze (miejsce, cena, liczba wolnych miejsc, daty trwania) 3. informacje na jakie wycieczki zapisał się dany uczestnik Każda osoba może wyjechać na dowolną liczbę wycieczek. Każda wycieczka ma ograniczoną liczbę miejsc. W przypadku braku miejsc nie można zapisywać już więcej osób. Dodatkowo wycieczki dla jednej osoby nie mogą ze sobą kolidować program powinien o to dbać. 1. Możliwość dodawania, usuwania osób 2. Możliwość dodawania, edycji wycieczek 3. Możliwość listowania wszystkich wycieczek danego użytkownika 4. Możliwość listowania osób zapisanych na daną wycieczkę 5. Listowanie książek, które wypożyczyła dana osoba 6. Symulowania zakupu wycieczek przez daną osobę 7. Program powinien mieć możliwość zapisywania danych podczas pracy po każdej modyfikacji 8. Plik tekstowy musi być zapisany w przyjaznym formacie, aby prowadzący mógł go Podpowiedzi: każda osoba będzie miała identyfikator osoba_id. Każda wycieczka będzie miała identyfikator wycieczka_id. Powiązanie wycieczek z osobami będzie za pomocą łączenia osoba_id z wycieczka_id Przykład plik: osoby.txt:
1:Jak:Kowalski 2:Ewa:Nowak wycieczki.txt: 1:Egipt:1500:1.07.2009:10.07.2009:4 2:Jerozolima:2000:1.08.2009:30:09.2009:13 osoba_wycieczka.txt 1:1 #Jan Kowalski (pierwsza 1) jedzie do Egiptu (1) 1:2 #Jak Kowalski (1) jedzie do Jerozolimy (2) 2:1 # Ewa Nowak (2) jedzie do Egiptu (1) po # zostało napisane co oznaczy zapis liczba:liczba tego co po # ma nie być w pliku z danymi Zadanie 15. Biuro nieruchomości Należy stworzyć prosty program wspomagający pracę biura nieruchomości. Program w pliku tekstowym lub xml powinien zapisywać następujące rzeczy: 1. osoby korzystające z biura nieruchomości (imię, nazwisko, wiek, telefon kontaktowy) 2. dostępne mieszkania w biurze nieruchomości (powierzchnia, cena, liczba pokoi, ulica, numer piętra, rok budowy, czy sprzedane) 3. informacje jakie mieszkania oglądał dany użytkownik Każda osoba może obejrzeć dowolną liczbę mieszkań. 1. Możliwość dodawania, usuwania osób 2. Możliwość dodawania, edycji nieruchomości (zaznaczenie że jest już sprzedana) 3. Możliwość listowania wszystkich mieszkań (z informacją które są sprzedane) 4. Listowanie mieszkań, które oglądała dana osoba 5. Symulowanie oglądania mieszkań przez daną osobę
6. Program powinien mieć możliwość zapisywania danych podczas pracy po każdej modyfikacji 7. Plik tekstowy musi być zapisany w przyjaznym formacie, aby prowadzący mógł go Podpowiedzi: każda osoba będzie miała identyfikator osoba_id. Każde mieszkanie będzie miało identyfikator mieszkanie_id. Powiązanie mieszkań z osobami będzie za pomocą łączenia osoba_id z mieszkanie_id Przykład plik: osoby.txt: 1:Jak:Kowalski 2:Ewa:Nowak mieszkania.txt: 1:Pulawska:50:50000:2:1956 2:Grójecka:51:30000:4:1956 osoba_mieszkanie.txt 1:1 #Jan Kowalski (pierwsza 1) oglądał mieszkanie na ulicy Puławskiej (1) 1:2 #Jak Kowalski (1) oglądał mieszkanie na ulicy Grójeckiej 2:1 # Ewa Nowak (2) oglądała mieszkanie na ulicy Puławskiej po # zostalo napisane co oznaczy zapis liczba:liczba tego co po # ma nie być w pliku z danymi