1. Opracować program, będący kalkulatorem ułamków zwykłych
Transkrypt
1. Opracować program, będący kalkulatorem ułamków zwykłych
1. Opracować program, będący kalkulatorem ułamków zwykłych. Program powinien wczytywać dwa ułamki zwykłe i wykonać na nich jedno z czterech podstawowych działań: dodawanie, odejmowanie, mnożenie lub dzielenie. Ułamki muszą być traktowane w obliczeniach w sposób dokładny, jako ilorazy dwóch liczb całkowitych. Wynik powinien być prezentowany w postaci ułamka maksymalnie uproszczonego (nieskracalnego), z wyłączeniem części całkowitej. 2. Opracować program, pełniący rolę kalkulatora macierzowego. Powinien on wykonywać podstawowe operacje na macierzach, tj. dodawanie, odejmowanie, mnożenie i odwracanie. Program powinien wyświetlić odpowiedni komunikat, jeśli wybrana operacja będzie dla danych macierzy niewykonalna. Sposób wczytywania macierzy i wypisywania wyników powinien być przyjazny dla użytkownika. 3. Opracować program, realizujący funkcję komputerowego dziennika. Program powinien zapewnić następującą funkcjonalność: możliwość swobodnej edycji dowolnej liczby grup, złożonych z dowolnej ilości nazwisk; automatyczne porządkowanie wprowadzanych nazwisk według alfabetu; możliwość dodawania do każdego nazwiska adnotacji tekstowych (obecność, oceny, uwagi itp) z towarzyszącą datą; przechowywanie wszystkich informacji w sposób trwały (w pliku); wygodną prezentację i edycję danych. 4. Opracować program, który będzie pomocą dydaktyczną do nauki wartości kwadratów liczb naturalnych z określonego zakresu (np. 1-20). Program powinien działać na zasadzie gry. Każdy z użytkowników będzie zakładał własne konto. Pojedyncza gra ma polegać na podaniu wyników określonej liczby działań. Ocena bazować będzie na szybkości rozwiązania oraz liczbie bezbłędnych wyników. Po zakończeniu gry program powinien podawać pozycję grającego wśród rezultatów pozostałych graczy. Informacje wymagające trwałego przechowywania (konta użytkowników i ich wyniki) mają być zapisywane w pliku tekstowym. 5. Opracować program, służący do kompresji i dekompresji plików tekstowych. Kompresja powinna przebiegać według następującego algorytmu: Na początku wykonywana jest statystyka (obliczanie ilości wystąpień) poszczególnych wyrazów. W kompresji uwzględniane są tylko wyrazy występujące w tekście co najmniej dwukrotnie. Dla każdego z takich wyrazów wszystkie jego wystąpienia zostają zastąpione napisem #<numer>, gdzie <numer> jest kolejnym numerem kompresowanego słowa. W wydzielonej sekcji tekstu dodawany jest wpis #<numer><słowo>. Dla każdego z podstawianych słów jest sprawdzane czy podstawienie doprowadzi do zmniejszenia liczby znaków tekstu, jeśli nie, podstawienie nie jest wykonywane. Jeśli napis #<numer> podstawiany za wyraz występuje w tekście oryginalnym, następuje próba użycia kolejnego napisu #<numer+1> itd. Dekompresja przebiega według odpowiedniego algorytmu tak, aby odtworzyć pierwotną postać tekstu. Po wykonaniu kompresji/dekompresji, program powinien podać dla porównania rozmiary obu plików tekstowych. 6. Opracować program, pełniący rolę szyfrowanego notatnika. Program powinien pozwalać na administrowanie (zakładanie, usuwanie, zmiana hasła itp.) kontami, do których dostęp odbywa się poprzez login i hasło. Zawartość konta dla poszczególnych użytkowników to dowolne wprowadzane przez nich teksty. Teksty te powinny być szyfrowane z wykorzystaniem hasła użytkownika jako klucza. Informacje wymagające trwałego przechowywania mają być zapisywane w pliku (plikach). 7. Opracować program, działający jako zegar z kalendarzem. Zegar powinien uwzględniać sekundy, minuty, godziny (tryb 24h), dni tygodnia, dni miesiąca, miesiące, lata. Należy zapewnić automatyczną obsługę lat przestępnych oraz zmiany czasu zimowy/letni. Algorytm określający relacje między poszczególnymi elementami czasu i daty powinien być samodzielny, niezależny od zegara systemowego i innych gotowych rozwiązań. Z zegara systemowego pobierać należy jedynie informację o upływie kolejnych sekund. Należy opracować metodę nastawiania zegara, np. poprzez wykorzystanie wybranych klawiszy do zmiany wartości minut, godzin, dni itd. 8. Opracować program, będący weryfikatorem poprawności zapisu partii szachowej. Program powinien weryfikować zapis partii wykonany w notacji algebraicznej, analizując ruch po ruchu i zatrzymując się z informacją o błędzie przy napotkaniu pierwszego niepoprawnego ruchu. Program może tworzyć w swojej pamięci reprezentację aktualnego stanu szachownicy po każdym poprawnym ruch, aby z jej pomocą zidentyfikować ruch błędny. 9. Opracować program, rozwiązujący problem komiwojażera dla przypadku 10 miast. Program powinien rozwiązać zadanie dwoma metodami: dokładną, uwzględniającą wszystkie przypadki tras oraz heurystyczną, według reguły wyboru najbliższego sąsiada. Dla porównania wypisywane powinny być 3 rezultaty: wynik dokładny oraz najlepszy i najgorszy wynik dla metody heurystycznej. Odległości między miastami mają być przechowywane w pliku tekstowym. 10. Opracować program, obliczający w sposób symboliczny całkę nieoznaczoną dla wszystkich postaci funkcji wymiernych, będących ułamkami prostymi. Należy uwzględnić także przypadek, w którym ułamek prosty drugiego rodzaju posiada większą od 1 potęgę w mianowniku i potrzeba użyć wzoru rekurencyjnego. Dane do obliczeń powinny być wprowadzane w prosty sposób tekstowy, np. (3*x-6)/(x^2+5)^3. Wynik może być wyprowadzany w podobny sposób lub w bardziej urozmaiconej formie semigraficznej. 11. Opracować program, działający jako kalkulator konfiguracji adresowej IP. Program powinien jako dane wejściowe pobierać adres IP oraz maskę, wpisane w jednym wierszu i rozdzielone ukośnikiem, np. 192.168.12.13/255.255.255.0, automatycznie powinien być także rozpoznawany alternatywny format, uwzględniający długość maski: 192.168.12.13/24. Wszystkie dane wejściowe, niezgodne z podanymi formatami lub niepoprawne ze względu na zasady adresowania IP, powinny być odrzucane. Dla wczytanej poprawnej konfiguracji program powinien wypisać informacje takie jak: adres sieci, adres rozgłoszeniowy, liczba hostów w sieci, najniższy adres hosta w sieci, najwyższy adres hosta w sieci. 12. Opracować program, rozwiązujący obwód elektryczny prądu przemiennego w stanie ustalonym, zbudowany z trzech dowolnie połączonych impedancji. Rozwiązanie powinno zawierać wykaz wartości prądów i napięć dla wszystkich elementów. Proponuje się, aby dane wejściowe wprowadzane były według następującej sekwencji: sposób połączenia elementów (równoległe, szeregowe, równoległo-szeregowe, szeregoworównoległe), wartości kolejnych impedancji, wartość napięcia zasilającego. Ponieważ wartości wejściowe i wyjściowe w programie będą liczbami zespolonymi, przydatną funkcjonalnością byłaby możliwość ich reprezentacji w kilku postaciach (np. algebraiczna i wykładnicza), według wyboru użytkownika. 13. Opracować program, generujący charakterystyki rezonansowe dla trójelementowych obwodów RLC prądu przemiennego o połączeniach mieszanych (równoległoszeregowych i szeregowo-równoległych). Proponuje się, aby dane wejściowe wprowadzane były według następującej sekwencji: sposób połączenia elementów, wartości elementów RLC, zakres i krok zmian częstotliwości, dla których obliczane mają być punkty charakterystyk. Dla każdego z punktów częstotliwościowych powinny zostać obliczone prądy i napięcia wszystkich elementów. Dane należy zapisać w pliku, po jednym wierszu dla każdej częstotliwości; w kolejnych kolumnach powinny znajdować się: częstotliwość, wartości skuteczne napięć, wartości skuteczne prądów, fazy napięć, fazy prądów poszczególnych elementów. 14. Opracować program, który rozwiąże opisane dalej zadanie harmonogramowania produkcji (jest to tzw. zadanie permutacyjnego systemu przepływowego, permutation flow shop). Dane jest m maszyn i n zadań produkcyjnych. Każde zadanie składa się z m operacji, wykonywanych na kolejnych maszynach, w kolejności od maszyny 1 do maszyny m. Dla każdej operacji, jednoznacznie zidentyfikowanej przez nr zadania i nr maszyny, określony jest czas jej trwania. Zadanie harmonogramowania polega na znalezieniu takiej kolejności wykonywania zadań, aby całkowity czas produkcji (do zakończenia ostatniej operacji) był jak najkrótszy. Kolejność przetwarzania zadań ma być jednakowa dla wszystkich maszyn. Zadanie należy rozwiązać metodą przeszukania wszystkich możliwości (tj. wszystkich permutacji ustawienia kolejności zadań). Dane wejściowe powinny posiadać postać pliku tekstowego, zawierającego tablicę czasów operacji (wartości całkowitoliczbowe), gdzie n wierszy reprezentować będzie kolejne zadania, a m kolumn maszyny. Program nie powinien akceptować wartości m i n większych od 10. Wyjściem programu ma być optymalny ciąg kolejności przypisania zadań do maszyn oraz odpowiadający mu minimalny czas produkcji. 15. Opracować program, który rozwiąże podany dalej problem analizy ruchu. Dana jest nieograniczona powierzchnia pozioma, która w pewnym przekroju płaszczyzną pionową i wszystkimi płaszczyznami do niej równoległymi ma postać naprzemiennie wznoszących się i opadających pod katem 30° odcinków o długości 1 metra. Na powierzchnię tą rzucamy swobodnie piłkę o pomijalnych wymiarach, z wysokości h (1m ≤ h ≤ 10m) tak, że pierwszy raz uderza ona w powierzchnię w połowie długości odcinka z opisanego przekroju. Przy każdym odbiciu piłka traci taki sam procent p (0.01 ≤ p ≤ 0.1) swojej energii kinetycznej. Program powinien obliczyć w jakiej odległości od punktu pierwszego uderzenia w powierzchnię zatrzyma się piłka. Danymi wejściowymi są parametry h oraz p.