Semestr wiosenny 2023/24
Projekty na zaliczenie:
Projekt 1: Napisz program, który obliczy przybliżoną wartość liczby pi, korzystając z dwóch możliwych metod. Pierwsza metoda korzysta ze wzoru całkowego: pi to jest całka od 0 do 1 z funkcji 4/(1+x^2). Druga metoda to tak zwana metoda Monte Carlo. Program generuje losowo punkty w kwadracie [0,1]x[0,1], i sprawdza, które z nich wpadły do ćwiartki koła o środku w punkcie (0,0) i promieniu 1. Proporcja tych, które wpadły do wszystkich powinna wynosić pi/4. Program powinien poprosić użytkownika o wybór metody obliczania i następnie obliczyć. W przypadku metody całkowej całkę należy wyliczyć metodą Simpsona. Należy uzyskać od użytkownika dopuszczalny błąd, a nastepnie skorzystać ze znanych oszacowań na błąd w metodzie Simpsona, żeby wyznaczyć gęstość podziału. W przypadku metody Monte Carlo należe uzyskać od użytkownika ilość punktów do rzucenia. Program powinien komunikować się z użytkownikiem, i proponować mu ponowne obliczenie, dopóki użytkownik nie naciśnie klawisza [esc]. Obie metody obliczenia powinny być wydzielone do osobnych plików i kompilowane osobno. Wszelkie problemy i niejasności proszę zgłaszać na wykładzie/laboratoriach/konsultacjach. Proszę pracować samodzielnie. W razie wątpliwości sprawdzający może autora/autorkę dopytać Uwaga 1: Pochodna rzędu 4 funkcji 1/(1+x^2) przyjmuje swoją największą wartość (co do modułu) na przedziale [0,1] w punkcie 0, i ta największa wartość (co do modułu) wynosi 24. Kto nie wierzy - niech zmierzy. Termin złożenia projektu: niedziela 5.05. (włącznie). Projekt 2: 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 jakieś 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" 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. 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. Termin złożenia projektu: niedziela 9.06. (włącznie) Uwaga: Treść zadania została poprawiona, w wyniku zgłoszonych uwag. Usunięty został wymóg aby lista była "zawsze posortowana". Usunięty został wymóg stosowania odpowiednich konstruktorów i destruktorów, do których nie doszliśmy na wykładzie. Ewentualne wątpliwości proszę wyjaśniać z prowadzącymi, na laboratorium, wykładzie, konsultacjach, ew. mailowo Uwaga: Do kopiowania i ew. porównywania stringów można korzystać z biblioteki cstring (funkcje strcpy i strcmp). Proszę nie korzystać z innych bibliotek. Uwaga: projekty (w postaci pliku .cpp lub kompletu plików .h .cpp) proszę przesłać 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.
Zasady zaliczania:
Podstawą zaliczenia są projekty. Za każdy projekt będą przydzielane punkty, a suma zostanie przeliczona na stopień. Ten stopień będzie wspólny dla laboratorium i wykładu.
Tematy na laboratorium:
Lista 1 | 26.02.24 | Lista 2 | 25.03.24 | Lista 3 | 8.04.24 |
Lista 4 | 22.04.24 | Lista 5 | Lista 6 |
Materiały z wykładu: