You are on page 1of 2

Część A

Zadanie A.1
Wyrażenie xn możemy przedstawić jako następującą rekurencje
(
1 gdy n = 0,
pow(x, n) =
x ∗ pow(x, n − 1) gdy n > 0.

Napisz funkcję realizującą powyższą rekurencje.

Zadanie A.2
Zapisz na kartce wzór rekurencyjny na obliczanie silni. Następnie napisz funkcję
realizującą tę rekurencję.

Zadanie A.3
Napisz funkcję, która zamienia dwa vector’y int’ów elementami. Załóż, że te
dwa vector’y są równych długości.

Zadanie A.4
Napisz funkcję, która dla zadanego vector’a double’i zamieni wszystkie ele-
menty równe 0 na średnią pozostałych, niezerowych, elementów.

Zadanie A.5
Napisz funkcje, które będą realizowały funkcjonalność operatorów i++ oraz ++i.

Część B
Zadanie B.1
Na liście 2 mieliśmy do zaimplementowania algorytm Euklidesa do obliczania
NWD. Przypomnijmy, że

• NWD(a, 0 ) = a,
• NWD(a, b ) = NWD(b , a mod b), gdzie a mod b oznacza resztę z dzielenia
a przez b.
Tym razem stwórz funkcję rekurencyjną, która realizuje ten algorytm.

Zadanie B.2
Napisz funkcję, która odwraca wartości danego vector’a int’ów. Innymi słowy,
jeżeli vector A jest postaci [0, 1, 5, 2, 7, 2, 8, 3], to po wykonaniu tej funkcji
powinien być postaci [3, 8, 2, 7, 2, 5, 1, 0]. Zauważ, że jest to funkcja, której zadaniem
jest zmiana vector’a podanego w argumencie.
Zadanie B.3
Napisz funkcję, która dla pojedynczego napisu zmodyfikuje go tak, że wszystkie
wyrazy w napisie będą zaczynały się z dużej litery. Napis możesz zdefiniować
oraz zainicajlizować w funkcji main. Dla przykładu, załóżmy, że Twoja funkcja
nazywa się toUpperCaseEveryWord i przyjmuje ona jeden argument - referencję
do string. Wtedy po wykonaniu następujących instrukcji

1
s t r i n g s t r = ” t o j e s t j a k i e s z d a n i e 1 2 3 , t e r a z j a k i e s z n a c z k i @#$%” ;
toUpperCaseEveryWord ( s t r ) ;
c o u t << s t r ;

Na ekranie pojawi się: To Jest Jakies Zdanie 123, Teraz Jakies Znaczki
@#$%.
Zadanie B.4 Napisz rekurencyjnie funkcję, która będzie obliczać n’tą potęgę
liczby całkowitej, gdzie n jest nieujemne. Postaraj się o optymalizację rozwiąza-
nia, tj. rozwiązanie z zadania A.1 nie wchodzi w grę. Rozpocznij od rozpisania
przykładów na kartce. Zauważ, że aby obliczyć 28 potrzebujemy ”w zwykłym”
podejściu 7 mnożeń. Jednakże, można zauważyć, że 28 = 44 = 162 . Tak więc
wystarczy policzyć 2∗2, później 4∗4, a na końcu 16∗16. Zapamiętując poprzedni
wynik sprowadzamy obliczenia do trzech mnożeń.
Wskazówka: Musisz rozpatrzeć osobno przypadki parzyste i nieparzyste.

You might also like