Warunki zaliczenia zajęć - laboratorium PO1 (C++)
W zależności od sytuacji może zostać przeprowadzone kolokwium.
Oceny końcowe zostaną wystawione na podstawie oceny z kolokwium i oceny przygotowanych projektów i pracy bieżącej każdego studenta.
Projekty i praca bieżąca będą oceniane na podstawie sumy punktów za poniżej opisane zadania.
Do uzyskania jest łącznie 30 punktów, w tym za poszczególne zadania:
- zad. 1 - 10 pkt.
- zad. 2 - 5 pkt.
- zad. 3 - 10 pkt.
- zad. 4 - 5 pkt.
Z kolokwium będzie można uzyskać maksymalnie 20 punktów.
Ostateczne oceny będą wystawione z uwzględnieniem procentowych progów sumy punktów:
- 3 - 50%
- 3+ - 57,5%
- 4 - 65%
- 4+ - 72,5%
- 5 - 80%
Zadania do wykonania:
- Klasa wielomianów (C++)
- Pola prywatne i publiczny dostęp do ich odczytu
- Dynamiczny przydział pamięci
- Metoda Pochodna()
- Konstruktory
- bezargumentowy
- kopiujący
- z argumentem: char *napis
- z argumentami: tablica współczynników + ich liczba
- Operatory arytmetyczne:
- dodawanie,
- odejmowanie,
- mnożenie,
- dzielenie,
- różne konteksty np. dodawanie w kontekście dwóch wielomianów bądź wielomianu i liczby, liczby i wielomianu
- Operator () wyznaczający wartość wielomianu w punkcie (schematem Hornera)
- Operator [] zwracający współczynnik przy danej potędze
- Operatory wejścia/wyjścia (>> i <<) w "naturalnym" formacie (np. 3x^5-2x^2+7).
Wyjście bardzo łatwe, wejście wg. następującego schematu:
- czytamy jako napis + usuwamy odstępy dla ułatwienia
- określamy stopień wielomianu
- alokujemy pamięć / ustawiamy stopień
- czytamy fragmentami (jednomianami) aż do końca i dodajemy do uprzednio wyzerowanego wielomianu (co pozwoli poprawnie czytać wielomiany z wielokrotnymi składnikami dla tego samego stopnia)
- Dziedziczenie na dwa sposoby (dodatkowe projekty, nie w ramach poprzedniego punktu)
- klasa Jednomian jako potomna klasy Wielomian
- konstruktor
- wykorzystanie Jednomianu w dzieleniu
- klasa abstrakcyjna BazaWielomianu i klasy potomne Jednomian i Wielomian
- czysto wirtualny operator []
- co wspólne do klasy BazaWielomianu (stopień, operatory, którym wystarczy operator [] i stopień)
- optymalne wykorzystanie pamięci - Jednomian ma jeden współczynnik, Wielomian, jak wcześniej, cała tablicę
-
A Vexing Problem (problem I z konkursu ACM z 2001 roku)
- Klasy
- Plansza
- Bloczek/Klocek?
- Ruch
- Sekwencja ruchów?
- Algorytm szukania rozwiązania
- Stan w procesie szukania? To samo co Plansza?
- Algorytmy rozwiązujące zadanie - zaimplementowane ogólnie + zastosowanie do tego problemu
- szukanie w głąb do odpowiedniej głębokości (11); zapamiętane najlepsze rozwiązanie i podmiana, gdy znalezione lepsze
- szukanie wszerz - pierwsze znalezione rozwiązanie jest minimalne; problem złożoności pamięci
- Szablony funkcji i klas
- Funkcji
- Suma - suma n wartości z tablicy
- jako zwykła funkcja
- jako szablon dla tablic
- jako szablon dla tablic i vectorów
- IleSpelnia - ile podzielnych przez 3, ile mniejszych od 0, ...
- szablon dla tablic
- dla tablic i wektorów
- dla funkcji i funktorów
- klasa Ulamek, wyposażona we wszystko co potrzebne dla ww szablonów, tzn. z możliwością liczenia sum i spełnionych warunków
- Projekcja/Obrazy (map) - funkcja generująca tablicę obrazów obiektów z innej tablicy uzyskanych danym przekształceniem
- przykłady wykorzystania: kwadraty liczb, odwrotności ułamków, ...
- Klas
- Kopiec
- dodawanie do kopca
- usuwanie elementu maksymalnego (z korzenia)
- wgląd w element maksymalny
- pobranie wszystkich elementów np. do zewnętrznej tablicy
- kMin - funkcjonalność wyboru k minimalnych elementów
- wykorzystanie kopca - trzymamy w kopcu k elementów - kolejne dodajemy i usuwamy maksymalny, jeśli za dużo)
- analiza kolejnego elementu - dodanie do kopca i usunięcie maksymalnego gdy za dużo
- pobranie minimalnych elementów na koniec (te pozostałe w kopcu)