Propozycje programów na zaliczenie
Tutaj można znaleźć kilka pomysłów na projekt zaliczeniowy (z czasem powinno być ich więcej).
Własne propozycje mile widziane. Wszelkie pytania proszę przesyłać na adres: grochu@fizyka.umk.pl
Statystyka
Program czyta z pliku liczby zapisane w kolumnach.
Dla każdej kolumny wyznacza wielkości: suma, średnia, odchylenie standardowe, wariancja, wartość maksymalna i minimalna.
Baza danych
Prosta baza danych (np. danych osobowych, książka telefoniczna, baza filmów lub muzyki, itp.). Program powinien mieć możliwość dodawania, usuwania i wyszukiwania rekordów, zapisywania oraz odczytywania całej bazy danych z pliku.
Analiza tekstu 1
Program po wczytaniu danego pliku tekstowego wyświetla częstości występowania każdej litery w tekście.
Wynik w postaci procentowej powinien być zapisany do pliku tekstowego (o nazwie podanej przez użytkownika) w kolejności od najczęściej do najrzadziej występującej litery.
Dodatkowo program mógłby wyświetlać ilość liter, słów i inne statystyki związane z tekstem.
Analiza tekstu 2
Program stanowi rozszerzenie poprzedniego projektu.
Dla danego zbioru plików z wynikami programu „Analiza tekstu 1” (najlepiej pochodzących z różnych języków) program określa podobieństwo tych statystyk do dowolnego nowego teksu.
Porównując częstości występowania liter w takście można w ten sposób określić np. w jakim języku napisany jest dany tekst.
Słownik
Program odczytuje podany plik tekstowy i na jego podstawie tworzy słownik tzn. wynikiem działania programu powinien być plik zawierający wszystkie występujące w tekście wyrazy ułożone w kolejności alfabetycznej.\Dany wyraz w słowniku może wystąpić tylko raz.
Szyfrowanie
Program szyfruje podaną treść. Może to być jeden program kodujący/dekodujący lub dwa programy, jeden szyfrujący, drugi - deszyfrujący wiadomość tekstową. Algorytm szyfrowania dowolny (kilka przykładów poniżej).
Przed zaszyfrowaniem z podanego tekstu program powinien usunąć wszystkie znaki różne od liter i spacji.
Przy szyfrowaniu użytkonik podaje klucz (hasło) - dowolny ciąg znaków, który jest niezbędny do późniejszego poprawnego rozszyfrowania tekstu.
Kilka przykładów algorytmów:
szyfr Cezara
Każdemu znak tekstu jawnego zastępujemy znakiem przesuniętym o określoną, stałą liczbę znaków w alfabecie. Litery z końca alfabetu stają się literami z jego początku. Przykładowo, przesuwając o 3 znaki litera A staje się literą D, litera Z staje się literą C, itd. Podane hasło przy szyfrowaniu powinno posłużyć do wygenerowania liczby całkowitej określającej o ile przesuwamy litery.
szyfr Cardano
Każda literę zastępujemy inną według ustalonego przyporządkowania, np.:
ABCDEFGHIJKLMNOPQRSTUVWXYZ QWERTYUIOPASDFGHJKLZXCVBNM
gdzie literę A zastępujemy literą Q, B literą W, itd. Dla alfabetu 26 znakowego mamy więc 26! możliwości różnych przyporządkowań liter. W programie należy zaproponować metodę generowania takiego przyporządkowania z podanego przy szyfrowaniu klucza (hasła).
Szyfr Vingener'a
Jest to zmodyfikowana wersja szyfru Cezara. Kluczem jest ciąg kilku liczb. Podobnie jak w metodzie Cezara zastępujemy znaki literami przesuniętymi o pewną wartość w alfabecie, z tym, że dla każdego znaku ta wartośćjest inna. Np. dla podanych w kluczu trzech liczb 2, 15 i 4 przesuwamy pierwszy znak o 2, drugi o 15, trzeci o 4, czwarty znów o 2 itd. Ponieważ każdy znak w naturalny sposób jest liczbą całkowitą w języku C (kod ASCII) nie powinno byćproblemu z zamianą dowolnego ciągu znaków (hasła) na ciąg liczb całkowitych wymaganychwtym algorytmie.
Macierz
Szyfrowany tekst umieszczany jest w macierzy. W zaleźności od podanego hasła powinna być generowana liczba określająca liczbę kolumn.
Np:
| T | A | J | N |
| A | W | I | |
| A | D | O | M |
| O | Ś | Ć |
Metoda polega na odczytaniu tekstu w kolumnach, czyli w tym przypadku otrzymamy: TAAOA DŚJWOŚNIM
XOR
Szyfrowany tekst i klucz zapisujemy w postaci binarnej. Na odpowiednich bitach tekstu i klucza wykonujemy operację XOR, czyli:
0 XOR 0 = 0 0 XOR 1 = 1 1 XOR 0 = 1 1 XOR 1 = 0
Otrzymana sekwencja bitów jest zaszyfrowanym tekstem. Odszyfrowanie sprowadza się do przeprowadzenia tej samej operacji na zaszyfrowanym tekście, gdyż jak łatwo sprawdzić
(A XOR B) XOR B = A
Gra Life
Symulacja życia „bakterii” na planszy o podanych przez użytkownika rozmiarach.
Rozkład początkowy organizmów jest losowany lub może być wczytany z pliku.
Życie na planszy toczy się według następujących reguł:
- jeśli puste pole jest otoczone przez co najmniej trzy bakterie to w tym miejscu powstaje nowa bakteria
- jeżeli bakteria jest otoczona przez więcej niż trzy bakterie - ginie z braku pożywienia
- jeśli bakteria posiada ma mniej niż 2 sąsiadów - ginie z samotności
Program powinien wyświetlać kolejne tury z życia kolonii.
Master Mind
Gra polegająca na odgadnięciu sekwencji czterech z sześciu możliwych symboli (np cyfr lub liter) wylosowanych na początku gry przez komputer.
Po każdej próbie program wyświetla następujące informacje:
- liczba trafionych symboli ale na złych pozycjach
- liczba trafionych symboli położonych w dobrym miejscu
W pliku tekstowym umieszczane są najlepsze wyniki.
Piętnastka
Program umieszcza na planszy 4×4 losowo ułożone liczby od 1 do 15 (lub znaki od „a” do „m”).
9 3 10 5 6 13 2 1 14 10 11 4 7 8 15
Celem jest w jak najmniejszej liczbie przesunięć danej liczby na wolne pole ułożyć je w porządku rosnącym.
Program łatwo można zmodyfikować tak aby działał dla planszy o dowolnej wielkości (dla chętnych).
W pliku tekstowym umieszczane są najlepsze wyniki.