9 Wskaźniki na funkcję
Napisz funkcję
calculate, która przyjmuje dwa argumenty: wskaźnik na funkcjęoperationoraz liczbę całkowitąnumber. Funkcjaoperationma przyjmować jeden argument typuinti zwracać wartość typuint. Funkcjacalculatepowinna wywołać funkcjęoperationz argumentemnumberi zwrócić jej wynik. Stwórz przypadek testowy.Napisz funkcję o nazwie
applyFunction, która przyjmuje trzy argumenty: wskaźnik na funkcjęfunc, która przyjmuje jeden argument typuinti zwracaint, oraz dwie liczby całkowite:startiend. FunkcjaapplyFunctionpowinna wywołać funkcjęfuncdla każdej liczby w zakresie odstartdoend(włącznie) i wydrukować wyniki na standardowe wyjście. Stwórz przypadek testowy.Napisz funkcję, która otrzymuje trzy argumenty:
- dwa wskaźniki na funkcje z jednym argumentem typu
intzwracające wartość typuint, - dodatnią wartość
ntypuint,
i zwraca 1, jeżeli otrzymane w argumentach funkcje mają ten sam znak dla wartości dla liczb całkowitych od 0 do \(n\), a zwraca 0 w przeciwnym wypadku. Stwórz przypadek testowy.
Napisz funkcję
calculateOperation, która przyjmuje jako argumenty: wskaźnik na funkcjęoperation, która przyjmuje dwa argumenty typudoublei zwracadouble, oraz dwa argumenty typudouble-number1inumber2. FunkcjacalculateOperationma zwracać wynik wywołania funkcjioperationna argumentachnumber1inumber2. Stwórz przypadek testowy.Napisz funkcję
modifyAndSum, która ma przyjmować jako argument wskaźnik na funkcjęmodifier, która przyjmuje jeden argument typuinti zwracaint, oraz dwa argumenty typuint:number1inumber2. FunkcjamodifyAndSumpowinna modyfikować obie liczby za pomocą funkcjimodifieri zwracać ich sumę. Przykładem funkcjimodifiermoże być funkcja, która zwiększa liczbę o 1 lub zmienia znak liczby. Stwórz przypadek testowy.Stwórz funkcję
applyCondition, która przyjmuje trzy argumenty: wskaźnik na funkcjęconditionzwracającą wartość typuinti przyjmującąint, wskaźnik na funkcjęactionrównież przyjmującą i zwracającąint, oraz wartość całkowitąvalue. FunkcjaapplyConditionpowinna najpierw wywołaćconditionzvaluejako argumentem. Jeśli wynik to 1,applyConditionpowinna następnie wywołaćactionnavaluei zwrócić wynik. W przeciwnym wypadku powinna zwrócićvaluebez zmian. Stwórz przypadek testowy.Stwórz funkcję
executeSequence, która przyjmuje dwa argumenty: wskaźnik na funkcjęoperationzwracającąvoidi przyjmującąintoraz liczbę całkowitącount. FunkcjaexecuteSequencepowinna wywołać funkcjęoperationdokładniecountrazy, przekazując jej jako argument kolejne liczby od 1 docount. Stwórz przypadek testowy.Stwórz funkcję
modifyValue, która przyjmuje argument typuintoraz wskaźnik na funkcjęmodifiernie przyjmującą żadnych argumentów, ale zwracającą wartość typuint. FunkcjamodifyValuepowinna dodać do przekazanej wartości wynik wywołania funkcjimodifieri zwrócić otrzymaną sumę. Stwórz przypadek testowy.Stwórz funkcję
processPairprzyjmującą dwie liczby całkowite oraz wskaźnik na funkcjęprocessor, która zwracadoublei przyjmuje dwa argumenty typuint. FunkcjaprocessPairpowinna wywołaćprocessorz przekazanymi liczbami, zaokrąglić wynik w dół do najbliższej liczby całkowitej i zwrócić tę wartość jakoint. Stwórz przypadek testowy.Stwórz funkcję
transformLoop, która przyjmuje wskaźnik na funkcjętransformzwracającąinti przyjmującąint, wartość początkowąstartoraz liczbę iteracjiiterations. Funkcja powinna wykonać określoną liczbę iteracji, w każdej iteracji przypisując zmiennej wynikowej wartość zwróconą przez funkcjętransformwywołaną na wyniku z poprzedniej iteracji (w pierwszej iteracji na wartościstart). Na koniec funkcja powinna zwrócić finalną wartość. Stwórz przypadek testowy.Stwórz funkcję
computeWithFallback, która przyjmuje trzy argumenty: wskaźnik na funkcjęprimaryprzyjmującą dwa parametry typuinti zwracającąint, wskaźnik na funkcjębackupo takiej samej sygnaturze oraz dwie wartości całkowiteaib. FunkcjacomputeWithFallbackpowinna wywołać funkcjęprimaryz argumentamiaib. Jeśli wynik funkcjiprimaryjest mniejszy od zera, funkcjacomputeWithFallbackpowinna wywołaćbackupz tymi samymi argumentamiaibi zwrócić wynik tej funkcji. W przeciwnym przypadku (gdy wynik funkcjiprimaryjest większy lub równy zero), funkcjacomputeWithFallbackpowinna zwrócić wynik funkcjiprimary. FunkcjacomputeWithFallbackpowinna zwracać wartość typuint. Stwórz przypadek testowy.