Semestr wiosenny 2018/19
Zaliczenie wykładu: 2 termin:
Szanowni Państwo: Dla osób, które nie zaliczyły wykładu w 1 terminie będzie 2 termin. Odbędzie się on 10.09. w godz. 10-12 w lab. 416. Formuła egzaminu będzie taka, że trzeba będzie w trakcie egzaminu napisać program. Nie będzie dostępu do internetu, natomiast będzie do dyspozycji książka Grębosza.
Projekty na zaliczenie:
Projekt 1: Napisz program, który poprosi użytkownika o podanie liczby naturalnej N po czym wypisze
N poczatkowych liczb pierwszych (powiedzmy, że pierwszą liczbą pierwszą jest 2). Następnie zapyta
się użytkownika, czy kontynuować, i jeżeli użytkownik odpowie "T", to program powtarza procedurę,
a jeżeli użyktownik odpowie "N" to program się zakończy.
Termin złożenia projektu: piątek 22.03. (włącznie)
Projekt 2: Napisz program, który oblicza przybliżoną wartość liczby pi. Powinien zapytać się
użytkownika o metodę obliczenia, a nastepnie wywołać jedną z kilku funkcji obliczających. Jedna z
funkcji powinna wykorzystać wzór: pi^2/6= suma odwrotności kwadratów liczb naturalnych. Inna z
funkcji powinna wykorzystać wzór: pi/2= suma n!/(2n+1)!!. ((.)!! to iloczyn wszystkich liczb nie
większych o tej samej parzystości - co druga). W końcu trzecia funkcja powinna zaimplementować tzw.
metodę Monte-Carlo: wiemy, że pi/4 to stosunek pola koła do pola opisanego na nim kwadratu.
Generujemy dużą ilość "punktów losowych" w kwadracie - można posłużyć się funkcją rand() - opis w
Google, i liczyć odsetek punktów, które "wpadły" do koła wpisanego w kwadrat. Wszystkie 3 funkcje
powinny znajdować się w odrębnym pliku. W ramach każdej funkcji należy zadać użytkownikowi pytanie
o ilość wymaganych iteracji, czy punktów losowych. Program powinien działać dopóki użytkownik nie
wybierze opcji "zakończ program".
Termin złożenia projektu: piątek 19.04. (włącznie)
Projekt 3: Program ma utworzyć i "utrzymywać" listę osób. Trzeba zdefiniować klasę "osoba", która
będzie zawierała dane osoby, imię i nazwisko, i jeszcze jeakieś dodatkowe. Te dane powinny być
prywatne, a do ich zapisu i odczytu powinny być w klasie specjalne funkcje. Następnie zdefiniować
należy klasę "lista", która zawierać będzie listę "osób" (jako część prywatną, która zawsze powinna
być przechowywana posortowana), oraz funkcje
działające na tej liście. Klasa powinna zawierać funkcje takie jak dodaj osobę, usuń osobę,
sortuj listę, wypisz listę, może jakieś inne. Lista osób oczywiście powinna być dynamiczna. Proszę
nie zapomnieć o odpowiednich konstruktorach i destruktorach.
Sam program powinien realizować menu, gdzie użytkownik
może wybrać opcję dodania osoby do listy, wypisania konkretnej osoby, wypisania całej listy,
ew. wyjścia z programu.
Uwaga: W związku z wieloma pytaniami dotyczącymi projektu, oraz uwagami
typu "że jest przerażający" :-) dyskutujemy ten projekt na zajęciach, i wypisujemy wspólnie szkielet
projektu. To, co się do tej pory "urodziło" można obejrzeć tutaj
Termin złożenia projektu: piątek 31.05. (włącznie)
Projekt 4: Projekt 4 to niewielkie uzupełnienie projektu 3. Należy do klasy Osoba dodać pole Wiek.
Lista zawierająca osoby powinna być posortowana jednocześnie względem nazwisk (alfabetycznie) i wieku.
To było omawiane na wykładzie.
Termin złożenia projektu: czwartek 13.06. (włącznie)
Uwaga: projekty (w postaci pliku .cpp) proszę przesłać mailem swojemu prowadzącemu grupę
laboratoryjną. Plik powinien zawierać wystarczająco dużo komentarzy, żeby prowadzący mógł go
skompilować i przetestować. Proszę dowiedzieć się u prowadzącego, jakie szczegółowe kryteria
oceniania będzie stosował. W trakcie pisania projektu jak najbardziej można się konsultować z innymi,
ale każdy projekt powinien być napisany i przetestowany samodzielnie. Prowadzący po złożeniu
projektu mogą zadawać pytania i wyjaśniać różne wątpliwości.
Tematy na laboratorium:
Lista 1 | 1.3.19 | Lista 2 | 16.3.19 | Lista 3 | 30.3.19 |
Lista 4 | 28.04.19 | Lista 5 | Lista 6 | ||
Lista 7 | Lista 8 | Lista 9 |