TI/Programowanie dla Fizyków Medycznych:KlasyZadania

Z Brain-wiki
Wersja z dnia 14:22, 23 maj 2015 autorstwa Jarekz (dyskusja | edycje) (Utworzono nową stronę "==Zadanie 1== Napisz klasę reprezentującą drzewa binarne, niech ma następujące metody: *konstruktor jednoargumentowy tworzący liść o zadanej wartości *konstrukt...")
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)

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.