- STL - co to?
-
std::vector
-
Pętla
for
po 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
enum
ach - Zainteresuj się tematem smart pointerów i poszukaj informacji czym jest
std::shared_ptr
istd::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 = 78
Napisz funkcję, która przyjmuje 2 argumenty:
int count
int 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-fundamentals
branchmodule2
- Poczekaj aż współpracownik wykona kroki 1-10
- Wybierz wariant:
- Zrób
git clone adres_repo_współpracownika
i na nim pracuj - Do swojego sklonownaego wcześniej repo dodaj adres repo współpracownika
git remote add nick adres
i ś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ą