Zestaw zadań z arkuszy powtórkowych — do rozwiązania w Pracowni C++. Każde zadanie otwiera się w emulatorze z gotowym szkieletem programu: dopisujesz funkcję, uruchamiasz i od razu widzisz, czy przechodzi wszystkie testy.
- Rekurencja — mnożenie dwóch liczb bez mnożenia, tylko dodawaniem i dzieleniem przez 2.
- Liczenie operacji — ile dokładnie dodawań wykonuje ten algorytm.
- Składanie wywołań — wyrażenie policzone wyłącznie gotowymi funkcjami, bez własnych działań.
- Parametry przez referencję — co naprawdę zmienia funkcja, a co zostaje w kopii.
- Tablice jako parametr — dlaczego zmiana w funkcji jest widoczna u wołającego.
Zadania z arkuszy — rekurencja, referencje i tablice
Parametr przez wartość i przez referencję
To najważniejsza rzecz w całym module, więc przypomnienie w jednym miejscu:
| Zapis | Co dostaje funkcja | Co widzi wołający |
|---|---|---|
void f(int x) | kopię wartości | nic — zmiany zostają w funkcji |
void f(int &x) | oryginał zmiennej | zmianę — funkcja pracuje na tej samej komórce |
void f(int t[]) | wskaźnik na pierwszy element | zmianę zawartości tablicy |
W funkcji z kilkoma parametrami patrz na każdy osobno: int &x zmienia oryginał,
int y nie. Kolejność instrukcji też ma znaczenie — jeśli druga linia używa
x, to już po zmianie z pierwszej linii.
Rekurencja bez mnożenia
Algorytm z arkusza liczy iloczyn x * y korzystając tylko z dodawania
i dzielenia całkowitego przez 2: dla y = 1 wynikiem jest x,
w przeciwnym razie liczymy z = iloczyn(x, y / 2), a potem wynik to
z + z (gdy y parzyste) albo x + z + z (gdy nieparzyste).
Zadania przepisane z arkuszy
Wszystkie zadania z czterech arkuszy — polecenie z arkusza jest w komentarzu na górze programu, a kod przepisany z wzoru. Zadania oznaczone plakietką przepisane z arkusza pochodzą wprost z plików PDF.
Mnożenie (Mnozenie.pdf)
- Rekurencyjne mnożenieprzepisane z arkuszaIloczyn x·y bez mnożenia — tylko dodawanie i dzielenie przez 2.Otwórz w Pracowni →
- Ile dodawań?przepisane z arkuszaTa sama rekurencja, ale liczymy wykonane operacje dodawania (arkusz 1.2).Otwórz w Pracowni →
Na poprawę — zadanie 1 (na_poprawe_zad_1.pdf)
- Uzupełnij program: (a+b)² + (c+d)²przepisane z arkuszaGotowe funkcje kwadrat i suma — wariant 1.Otwórz w Pracowni →
- Uzupełnij program: (a² + b)² + c + dprzepisane z arkuszaTe same funkcje, wyrażenie zagnieżdżone — wariant 2.Otwórz w Pracowni →
- Uzupełnij program: inny zestaw funkcjiprzepisane z arkuszakwadrat zwraca wynik, suma przez referencję — wariant 3.Otwórz w Pracowni →
- Uzupełnij program: (a+b)² + (c+d)² (drugi zestaw)przepisane z arkuszaTen sam wzór, odwrócone role funkcji — wariant 4.Otwórz w Pracowni →
Na poprawę — zadanie 2 (na_poprawe_zad_2.pdf)
- Przeanalizuj kod — wariant 1przepisane z arkuszaklops(int &x, int y, int &z), a=10, b=20, c=30.Otwórz w Pracowni →
- Przeanalizuj kod — wariant 2przepisane z arkuszaklops(int x, int &y, int &z).Otwórz w Pracowni →
- Przeanalizuj kod — wariant 3przepisane z arkuszaklops(int &x, int &y, int z).Otwórz w Pracowni →
- Przeanalizuj kod — wariant 4przepisane z arkuszaklops(int x, int y, int &z), a=1, b=2, c=3.Otwórz w Pracowni →
Tablice jako parametry funkcji (tablice_jako_parametr_rozwiazane.pdf)
- Suma elementów tablicyprzepisane z arkuszaNagłówek, wywołanie i ciało funkcji sumującej tablicę int.Otwórz w Pracowni →
- Znajdowanie maksimumprzepisane z arkuszaMaksimum w tablicy double, wynik przez return.Otwórz w Pracowni →
- Liczenie wystąpień elementuprzepisane z arkuszavoid + wynik przez referencję.Otwórz w Pracowni →
- Sprawdzenie posortowania niemalejącoprzepisane z arkuszaWynik logiczny bool.Otwórz w Pracowni →
- Średnia arytmetycznaprzepisane z arkuszaWynik typu float.Otwórz w Pracowni →
- Minimum i jego indeksprzepisane z arkuszaWartość przez return, indeks przez referencję.Otwórz w Pracowni →
- Dodanie stałej do elementówprzepisane z arkuszaModyfikacja oryginalnej tablicy.Otwórz w Pracowni →
- Zliczanie samogłosekprzepisane z arkuszaTablica char i warunki na znaki.Otwórz w Pracowni →
- Kopiowanie z odwróceniemprzepisane z arkuszaDwie tablice w parametrach.Otwórz w Pracowni →
- Sprawdzenie czy element istniejeprzepisane z arkuszaWynik bool.Otwórz w Pracowni →
- Indeks pierwszego wystąpieniaprzepisane z arkuszaZwraca indeks lub -1.Otwórz w Pracowni →
- Minimum i maksimum jednocześnieprzepisane z arkuszaDwa wyniki przez referencję.Otwórz w Pracowni →
- Zliczanie elementów parzystychprzepisane z arkuszaWarunek w pętli i licznik.Otwórz w Pracowni →
- Konwersja na wielkie literyprzepisane z arkuszaZmiana tablicy char w miejscu.Otwórz w Pracowni →
- Porównanie dwóch tablicprzepisane z arkuszaWynik bool dla dwóch tablic.Otwórz w Pracowni →
- Palindrom tablicowyprzepisane z arkuszaPorównanie znaków od końców.Otwórz w Pracowni →
Zadania dodatkowe — uzupełnij luki
Ten sam materiał, ale podany inaczej: szkielet programu jest gotowy, a Ty wpisujesz brakujący kod w miejsce /* tu wpisz */. Te zadania nie pochodzą z arkuszy — to dodatek do ćwiczenia.
- Uzupełnij rekurencyjne mnożenieTrzy luki w rekurencji z zadania 1.Otwórz w Pracowni →
- Uzupełnij licznik dodawańTa sama rekurencja, uzupełniasz licznik.Otwórz w Pracowni →
- Uzupełnij wyrażenie z gotowych funkcji(a+b)² + (c+d)² — wpisujesz wywołania.Otwórz w Pracowni →
- Uzupełnij śledzenie referencjiProgram z arkusza, luka w ciele klops.Otwórz w Pracowni →
- Uzupełnij pętlę sumującą tablicęPoczątek pętli, warunek, dodanie elementu.Otwórz w Pracowni →
- Suma tablicy (wersja wcześniejsza)Funkcja licząca sumę n elementów — poprzednik zadania vs-20 z arkusza.Otwórz w Pracowni →
- Odwróć tablicę w miejscuZmiana zawartości tablicy widoczna u wołającego — zadanie spoza arkuszy.Otwórz w Pracowni →
W Pracowni każde zadanie ma testy — po napisaniu kodu naciśnij ✓ Sprawdź i zobacz, które kryteria są już zielone.