- STL - co to?
-
std::vector -
Pętla
forpo kolekcji -
std::string -
std::list -
std::map
- Jeśli nie wiesz czym jest
operator%to się dowiedz. Przyda się do pracy domowej :) - Zadanie 1 - AddEven (4 punkty)
- Zadanie 2 - NWD (LCM) i NWW (GCD) (6 punktów)
- Zadanie 3 - MaxOfVector (5 punktów)
- Zadanie 4 - GenerateSequence (5 punktów)
Za dostarczenie każdego zadania przed 31.05.2020 (niedziela) do 23:59 dostaniesz 2 bonusowe punkty (razem 8 punktów za 4 zadania).
- Przypomnij sobie informacje o wskaźnikach np z wideo pana Zelenta
- Poczytaj o
enumach - Zainteresuj się tematem smart pointerów i poszukaj informacji czym jest
std::shared_ptristd::unique_ptr - Przyjrzyj się plikom z testami w zadaniach domowych i spróbuj dopisać własne przypadki testowe
Napisz funkcję, która przyjmie std::vector<int> oraz zwróci sumę wszystkich jego parzystych elementów.
Deklaracja - int addEven(const std::vector<int>& numbers)
Jeśli nie wiesz, co funkcja powinna zwracać w niektórych przypadkach to zapoznaj się z testami.
std::vector<int> vec{1, 2, 3, 4, 5};
auto result = addEven(vec); // result = 6;Zaimplementuj dwie funkcje - NWD, która ma liczyć Największy Wspólny Dzielnik i NWW, która ma liczyć Najmniejszą Wspólną Wielokrotność 2 liczb. Uważaj na nietypowe przypadki, takie jak 0 lub liczby ujemne :)
std::cout << "NWW(255, 15) = " << NWW(255, 15) << "\n";
std::cout << "NWD(255, 15) = " << NWD(255, 15) << "\n";Napisz funkcję, która przyjmuje std::vector<int> i zwraca największy element tego wektora.
std::vector<int> numbers = {6, 78, 12, 54, -11, 0};
auto result = maxOfVector(numbers); // result = 78Napisz funkcję, która przyjmuje 2 argumenty:
int countint step
oraz zwraca std::vector<int> posiadający count elementów i każdy z nich jest większy od poprzedniego o step. Pierwszy ma wynosić tyle, ile step.
auto result = generateSequence(5, 3); // result = {3, 6, 9, 12, 15}Za dostarczenie zadań wspólnie z kimś innym dostaniecie dodatkowo 3 punkty (na osobę). W PR muszą być widoczne commity obu osób oraz musi być on odpowiednio opisany:
Title: Homework Podstawy C++ #2
Description: Authors: @github_nick1, @github_nick2 \n Some additional info
Wszystkie zadania należy tym razem dostarczyć na jednym branchu. 2 punkty za samo zgłoszenie PR dostanie osoba zgłaszająca, ale wyrównam to dodając 2 dodatkowe punkty drugiej osobie.
Najprościej będzie, gdy druga osoba zrobi clone z repozytorium tej pierwszej, a ta pierwsza do uprawnienia do zapisu tej drugiej.
Można też dodać nowe zdalne repozytorium w już wcześniej sklonowanym swoim forku za pomocą git remote add nazwa adres.
- Już masz fork repo cpp-fundamentals, nie da się ponownie zrobić forka
- Jeśli zamierzasz pracować w parze, to najłatwiej będzie, gdy dasz drugiej osobie uprawnienia do pushowania do Twojego repo. Wybierz
Role: Write - Masz już ściągnięte swojego forka
- Przejdź do katalogu repo -
cd cpp-fundamentals - Dodaj nowe repozytorium zdalne -
git remote add coders https://github.com/coders-school/cpp-fundamentals.git - Zaktualizuj repozytorium z nowo dodanego adresu -
git fetch coders - Przełącz się na branch module2 -
git checkout module2 - Możesz teraz nowo ściągniętego brancha wysłać też na swoje repo na GH -
git push origin module2 - Utwórz oddzielną gałąź na pracę domową -
git checkout -b homework2 - Wyślij od razu tę gałąź na GitHuba, zanim cokolwiek zaimplementujesz -
git push origin homework2 - Zaimplementuj (samodzielnie lub wspólnie) rozwiązania, robiąc dużo malutkich commitów. Przy pracy grupowej możecie się podzielić zadaniami, aby nie wchodzić sobie w paradę i nie tworzyć konfliktów, ale jeśli chcecie od razu spróbować wersji hardcore to zróbcie razem to samo zadanie :)
- Wysyłając zmiany na GitHuba używaj komendy
git push origin homework2 - Przy zgłoszeniu Pull Requesta wyklikaj, że chcesz go dostarczyć do
coders-school/cpp-fundamentalsbranchmodule2
- Poczekaj aż współpracownik wykona kroki 1-10
- Wybierz wariant:
- Zrób
git clone adres_repo_współpracownikai na nim pracuj - Do swojego sklonownaego wcześniej repo dodaj adres repo współpracownika
git remote add nick adresi ściągnij z niego zmiany -git fetch nick
- Zrób
- Przełącz się na gałąź homework2 -
git checkout homework2 - Zbuduj projekty, podzielcie się robotą, zaimplementujcie rozwiązanie.
- Wysyłaj zmiany na GH współpracownika -
git push nick homework2 - Współpracownik zgłosi PR, Ty nic nie musisz klikać :)
- W razie problemów zawsze możesz też przejść na pracę samodzielną
