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.