TI/Programowanie dla Fizyków Medycznych:KlasyZadania
Spis treści
Zadanie 1
Napisz klasę reprezentującą drzewa binarne, niech ma następujące metody:
- konstruktor jednoargumentowy tworzący liść o zadanej wartości
- konstruktor umożliwiający stworzenie węzła o zadanej wartości i prawym lub lewym potomku
- wysokosc() - zwracającą wysokość drzewa
- szerokosc() - zwracającą szerokość drzewa
- liczbaWezlow() - zwracającą liczbę węzłów
- liczbaLisci() - zwracająca liczbę liści w drzewie
- wypisz(porzadek) - wypisuje drzewo w kolejności zadanej przez napis początek, możliwe wartości: 'preLP', 'postLP', 'infLP', 'prePL', 'postPL' i 'infPL', gdy nie podano parametru porzadek niech będzie przyjmowany 'preLP', w przypadku podania innego napisu lub wartości nie będącej napisem niech będzie zgłaszany wyjątek
- czyIzomorficzne(drzewo) - zwracająca True gdy drzewo jest izomorficzne z self
- doListy() - zwracająca listę zawierającą wartości poszczególnych węzłów - indeksowanie na drzewie: lewy syn i-tego węzła ma indeks 2 * i, a prawy 2 * i + 1, korzeń ma indeks 1, przy takim indeksowaniu wartości drzewa można wygodnie trzymać na liście (na pozycji indeks - 1), niech pozycje którym nie odpowiadają żadne węzły mają wartość None, a zwracana lista niech nie ma zbędnych None na końcu
- zListy(lista) - klasowa metoda generująca drzewo na podstawie listy takiej jak opisana w poprzednim punkcie
- zdefiniować operatory logiczne or i and zwracające drzewo o wszystkich wartościach równych 0 i mające kształt będący odpowiednio sumą i częścią wspólną drzew będących argumentami
- zdefiniować operator + zwracający drzewo mające kształt będący sumą drzew będących argumentami, a w każdym węźle niech będzie suma wartości z odpowiednich węzłów z danych drzew (jeśli w jednym drzewie nie ma odpowiedniego węzła to kopiujemy wartość z odpowiedniego węzła drugiego drzewa)
Zadanie 2
Napisać klasę reprezentującą drzewo wyszukiwań binarnych, niech ma następujące metody:
- czyJestWartosc(wartosc) - zwraca True gdy wartosc jest w drzewie False w przeciwnym wypadku
- wstaw(wartosc) - wstawia wartosc do drzewa, jeśli wartosc jest już w drzewie to nie robi nic
- usun(wartosc) - usuwa wartość z drzewa, jeśli jej nie było to zwraca wyjatek
- czyPuse() - zwraca True gdy drzewo jest puste, False w przeciwnym wypadku
Zadanie 3
Napisz klasę reprezentującą wielomian, niech ma następujące metody:
- pochodna() - zwracająca wielomian reprezentujący pochodną danego
- calka() - zwracającą wielomian reprezentujący całkę z danego
- wartosc(x) - zwraca wartość wielomianu w punkcie x
- calka_oznaczona(x1, x2) - zwraca wartość całki oznaczonej od x1 do x2
- zdefiniować operatory +, -, * i wypisywanie
Napisać klasę reprezentującą wyrażenia wymierne, niech ma następujące metody:
- wartosc(x) - zwraca wartość w punkcie x
Zadanie 4
Napisać klasę reprezentującą ciąg arytmetyczny, niech ma następujące metody:
- konstruktor bezparametrowy przyjmujący a_1 = 1 i r = 1
- konstruktory jedno i dwuargumentowe
- pobieranie a_n przez ciag[n], niech zwraca wyjątek gdy n <= 0
- ustawianie a_n przez ciag[n] = wartosc, jeśli ustawimy ręcznie wartość to przy kolejnym pobraniu a_n ta wartość ma być zwrócona
- usuwanie ustawionej ręcznie wartości przez del ciag[n]
- przedefiniować operatory + i - tak aby zwracały ciąg którego elementy są sumą i różnicą elementów danych ciagów
Zadanie 5
Napisać klasę po której będzie można się iterować i będzie ona sekwencją po ciągu liczb Fibonacciego, niech sekwencja przebiega po tylu liczbach jaką wartość podano w konstruktorze
Zadanie 6
Napisz program, który wczyta z plików listę miast, połączeń między nimi i odległości tych połączeń a następnie pozwoli wyszukiwać połączeń między zadanymi punktami o długości mniejszej niż zadana.