Monika Dekster

Laboratorium 12: Funkcje lambda

Zadania

Proszę utworzyć wektor liczb całkowitych o wczytanej długości i wypełnić go liczbami losowymi z przedziału $[0, 20)$ oraz zaimplementować funkcje:

  1. int count(const vector<int>& list, const function<bool(int)>& predicate), która zwraca liczbę elementów kontenera spełniających zadany predykat
  2. vector<int> modify(const vector<int>& list, const function<bool(int)>& predicate, const function<int(int)>& modificator), która zwraca nowy wektor zawierający wszystkie elementy wektora dla których spełniony jest predykat zmodyfikowane w sposób zadany parametrem modificator

Następnie, używając powyższych funkcji z odpowiednimi wyrażeniami lambda proszę:

  1. wyznaczyć i wypisać liczbę wartości wektora podzielnych przez 7 i nie podzielnych przez 3
  2. wyznaczyć i wypisać liczbę wartości wektora zawartych w przedziale [5, 10]
  3. wypisać wektor po podniesieniu do kwadratu elementów większych od 10
  4. wypisać wektor po zanegowaniu elementów parzystych

Przykład: jeżeli oryginalny wektor zawiera wartości 1, 3, 12, 7, 16, to w punkcie 3. nowy wektor zwracany przez funkcję powinien zawierać 144, 256, a w punkcie 4. -12, -16.

Uwaga: Nie wolno używać algorytmów z biblioteki C++.