Nazwa zgodna z numerem zadania np. lab-2, proj-2, zad-2, zad_2, itp.
Dodanie prowadzącego do projektu: Repo -> Settings -> Members
Sensowne opisy commitów - skrótowy, ogólny opis wprowadzanych zmian
Bez plików binarnych - tylko kod programu i ew. plik konfiguracyjny projektu
Zadania laboratoryjne
Daty dotyczą oddania zdalnego - 'obrony' / oddanie na żywo możliwe w
późniejszym terminie
Lab 1. (3 pkt), data oddania: do 09.03.2020
Napisać prosty program w C++ wypisujący wartość zmiennej na ekan.
Wykorzystać debugger do podmiany wartości zmiennej przed wypisaniem na ekran.
Lab 2. (7 pkt), data oddania: do 23.03.2020
Zad. 2.1.
Napisz funkcję zwracającą liczby pierwszych z przedziału od 1 do n.
Funkcja powinna zwracać liczbę znalezionych liczb pierwszych oraz 10 największych znalezionych liczb.
Należy użyć metody sita Eratostenesa.
Napisz funkcję testującą i przetestuj dla różnych danych wejściowych.
Zad. 2.2.
Napisz dwie funkcje.
Pierwsza, która rozkłada podaną liczbę na czynniki pierwsze.
Funkcja powinna zwracać liczbę czynników oraz czynniki pierwsze.
Druga, która sprawdza czy liczba jest liczbą pierwszą.
Wykorzystaj do tego pierwszą funkcję.
Napisz funkcję testującą i przetestuj dla różnych danych wejściowych.
Zad. 2.3.
Napisz funkcję znajdującą pierwiastek równania x^2 - sin(x) - 1 = 0 z dokładnością E wykorzystując metodę siecznych.
Funkcja powinna zwracać wartość pierwiastka oraz do 10 ostatnich przybliżeń.
Napisz funkcję testującą i przetestuj dla różnych danych wejściowych.
Zad. 2.4.
Napisz funkcję obliczającą długość krzywej wyrażonej zależnością y = x^2 - sin(x) - 1 w danym przedziale (a, b) z dokładnością E.
Zastąpić krzywą przez łamaną i sukcesywnie zwiększać liczbę przedziałów wyznaczających odcinki do czasu, gdy kolejna zmiana długości łamanej stanie się mniejsza od E.
Funkcja powinna zwracać długość, liczbę przedziałów i do 10 ostatnich przybliżeń.
Napisz funkcję testującą i przetestuj dla różnych danych wejściowych.
Lab 3. (10 pkt), data oddania: do 06.04.2020
Zad. 3.1.
Napisz klasę opisującą liczbę zespoloną, która umożliwia wykonywanie na niej operacji dodawania, odejmowania, mnożenia oraz zwiększania i zmniejszania części urojonej o jeden.
Dla operacji arytmetycznych i do porównywania liczb zespolonych ze sobą należy przeciążyć odpowiednie operatory (+, -, *, ++, --, ==).
____ np. '5 + 2i' + '2 + 1i' = '6 + 3i'
Należy również umożliwić wykonywanie operacji arytmetycznych między liczbami zespolonymi oraz typami wbudowanymi (int/double).
Dodawanie/odejmowanie liczby całkowitej powinno dodawać/odejmować część rzeczywistą.
____ np. ‘5 + 3i’ + 5 = ‘10 + 3i’
Dodawanie/odejmowanie liczby zmiennoprzecinkowej powinno dodawać/odejmować część urojoną.
____ np. ‘5 + 3i’ + 5.0 = ‘5 + 8i’
Wykorzystaj przeciążenie operatora << (ostream) aby móc wypisać na ekran reprezentację liczby w pełnej postaci.
____ np. 5 + 2i
Wykonując zaimplementowane operacje na obiekcie należy zapisywać poprzednie wartości w postaci tekstowej w wektorze (pole vector w klasie).
Klasa powinna zawierać metodę pozwalającą wypisać na konsolę kolejne zapamiętane wartości z wektora.
Napisz funkcję testującą zaimplementowane operacje i przetestuj dla różnych danych wejściowych.
Zad. 3.2.
Napisz klasę opisującą datę, która umożliwia wykonywanie na niej operacji dodawania i odejmowania oraz zwiększania i zmniejszania liczby dni o jeden.
Dla operacji arytmetycznych i do porównywania dat należy przeciążyć odpowiednie operatory (+, -, ++, --, ==).
Dodawanie/odejmowanie dat powinno uwzględniać dni, miesiące i lata.
____ np. ‘2020-10-10’ + ‘0100-03-30’ = ‘2121-02-09’
Należy również umożliwić wykonywanie operacji arytmetycznych między datami oraz typami wbudowanymi (int/double).
Dodawanie/odejmowanie liczby całkowitej powinno dodawać/odejmować miesiąc.
____ np. ‘2020-10-11’ + 4 = ‘2021-02-11’
Dodawanie/odejmowanie liczby zmiennoprzecinkowej powinno dodawać/odejmować dzień.
____ np. ‘2020-10-11’ + 4.0 = ‘2020-10-15’
Można przyjąć tą samą liczbę dni w każdym miesiącu, pominąć kwestie lat przestępnych i ujemnych dat (min. ‘0000-00-00’).
Wykorzystaj przeciążenie operatora << (ostream) aby móc wypisać na ekran reprezentację daty w pełnej postaci.
____ np. 2020-03-23
Wykonując zaimplementowane operacje na obiekcie należy zapisywać poprzednie wartości w postaci tekstowej w wektorze (pole vector w klasie).
Klasa powinna zawierać metodę pozwalającą wypisać na konsolę kolejne zapamiętane wartości z wektora.
Napisz funkcję testującą zaimplementowane operacje i przetestuj dla różnych danych wejściowych.
Zad. 3.3.
Napisz klasę opisującą czas, która umożliwia wykonywanie na niej operacji dodawania i odejmowania oraz zwiększania i zmniejszania liczby sekund o jeden.
Dla operacji arytmetycznych na czasie i do porównywania czasu należy przeciążyć odpowiednie operatory (+, -, ++, --, ==).
Dodawanie/odejmowanie czasu powinno uwzględniać sekundy, minuty i godziny.
____ np. '11:55:55' + '01:10:10' = '13:06:05'
Należy również umożliwić wykonywanie operacji arytmetycznych między czasem oraz typami wbudowanymi (int/double).
Dodawanie/odejmowanie liczby całkowitej powinno dodawać/odejmować minuty.
____ np. ‘11:00:23’ + 4 = ‘11:04:23’
Dodawanie/odejmowanie liczby zmiennoprzecinkowej powinno dodawać/odejmować sekundy.
____ np. ‘11:00:23’ + 4.0 = ‘11:00:27’
Przekroczenie ‘północy’ traktować jak na tarczy zegara.
____ np. ‘23:55:00’ + 6 = ‘00:01:00’
Wykorzystaj przeciążenie operatora << (ostream) aby móc wypisać na ekran reprezentację czasu w pełnej postaci.
____ np. 11:20:28
Wykonując zaimplementowane operacje na obiekcie należy zapisywać poprzednie wartości w postaci tekstowej w wektorze (pole vector w klasie).
Klasa powinna zawierać metodę pozwalającą wypisać na konsolę kolejne zapamiętane wartości z wektora.
Napisz funkcję testującą zaimplementowane operacje i przetestuj dla różnych danych wejściowych.
Lab 4. (10 pkt), data oddania: do 04.05.2020
Zad. 4.1.
Napisać klasę Lista przechowującą elementy typu T o maksymalnej pojemności N.
T i N są parametrami szablonu z domyślną wartością 10 dla N.
Użyć tablicy - nie korzystać z kontenerów biblioteki standardowej.
Dostępne publiczne metody:
- Dodaj element,
- Usuń element ze wskazanej pozycji,
- Zwróć element ze wskazanej pozycji - użyć operatora [],
- Wyczyść listę,
- Zwróć liczbę przechowywanych elementów,
- Zwróć niemodyfikowalną tablicę elementów.
Stworzyć klasę pochodną UnikalnaLista, która:
- Nie przechowuje duplikatów,
- Ukrywa możliwość usuwania elementu ze wskazanej pozycji,
- Posiada metodę usuwającą z listy element podany jako argument.
Napisać klasę Osoba z polem Imię - wykorzystać w testach.
Napisać testy dla metod stworzonych kontenerów - sprawdzić działanie dla różnych typów (min. 2 - w tym klasa Osoba).
Zad. 4.2.
Napisać klasę Kolejka przechowującą elementy typu T o maksymalnej pojemności N.
T i N są parametrami szablonu z domyślną wartością 10 dla N.
Użyć tablicy - nie korzystać z kontenerów biblioteki standardowej.
Dostępne publiczne metody:
- Dodaj element na początek/koniec,
- Usuń element z początku/końca,
- Zwróć element z początku/końca,
- Wyczyść kolejkę,
- Zwróć liczbę przechowywanych elementów,
- Zwróć niemodyfikowalną tablicę elementów.
Stworzyć klasę pochodną Stos, która:
- Ukrywa możliwość dodawania/usuwania/zwracania elementu z początku,
- Posiada metodę pozwalającą odwrócić stos - w ramach obiektu.
Napisać klasę Osoba z polem Imię - wykorzystać w testach.
Napisać testy dla metod stworzonych kontenerów - sprawdzić działanie dla różnych typów (min. 2 - w tym klasa Osoba).
Zad. 4.3.
Napisać klasę Lista przechowującą elementy typu T o maksymalnej pojemności N.
T i N są parametrami szablonu z domyślną wartością 10 dla N.
Użyć tablicy - nie korzystać z kontenerów biblioteki standardowej.
Dostępne publiczne metody:
- Dodaj element na wskazanej pozycji,
- Usuń element ze wskazanej pozycji,
- Zwróć element ze wskazanej pozycji - użyć operatora [],
- Wyczyść listę,
- Zwróć liczbę przechowywanych elementów,
- Zwróć niemodyfikowalną tablicę elementów.
Stworzyć klasę pochodną PosortowanaLista, która:
- Nie przechowuje duplikatów,
- Ukrywa możliwość dodania elementu na wskazanej pozycji,
- Przy dodawaniu elementu zapewnia posortowanie elementów listy ze względu na operator '<'.
Napisać klasę Osoba z polem Imię i przeciążonym operatorem '<' - wykorzystać w testach.
Napisać testy dla metod stworzonych kontenerów - sprawdzić działanie dla różnych typów (min. 2 - w tym klasa Osoba).
Zad. 4.4.
Napisać klasę Kolejka przechowującą elementy typu T o maksymalnej pojemności N.
T i N są parametrami szablonu z domyślną wartością 10 dla N.
Użyć tablicy - nie korzystać z kontenerów biblioteki standardowej.
Dostępne publiczne metody:
- Dodaj element na początek/koniec,
- Usuń element z początku/końca,
- Zwróć element z początku/końca,
- Wyczyść kolejkę,
- Zwróć liczbę przechowywanych elementów,
- Zwróć niemodyfikowalną tablicę elementów.
Stworzyć klasę pochodną FIFO, która:
- Ukrywa możliwość dodawania/usuwania/zwracania elementu z początku,
- Ukrywa możliwość usuwania elementu z końca,
- Przy zwracaniu elementu z końca jednocześnie usuwa go z kolejki.
Napisać klasę Osoba z polem Imię - wykorzystać w testach.
Napisać testy dla metod stworzonych kontenerów - sprawdzić działanie dla różnych typów (min. 2 - w tym klasa Osoba).
Projekt (20 pkt), data oddania: do 08.06.2020
Program realizujący założenia zgodnie z przekazanymi mailowo informacjami.
Dokumentacja zgodnie z przekazanymi informacjami oraz tego co niżej - dotyczy projektu
Format .pdf w repozytorium
Zwięzła - max 3 strony
1. Autor i data
2. Treść zadania
3. Podział odopwiedzialności w zespole
4. Najważniejsze elementy programu
5. Opis sposobu testowania
6. Zwięzła instrukcja dla użytkownika programu
Bez szczegółowego / obszernego opisu struktury klas, funkcji itd.