Darmowe konto pozwoli wrócić do niego później.
Polecenie
Zadanie 2. Liczby binarne
W tym zadaniu rozważamy binarny zapis liczb całkowitych dodatnich.
Blokiem w zapisie binarnym liczby nazywamy każdy niepusty, maksymalny (nie można go rozszerzyć ani z lewej, ani z prawej strony) ciąg kolejnych takich samych cyfr w tym zapisie.
Przykład:
Liczba binarna 111110000110111 składa się z pięciu bloków – trzech bloków złożonych z jedynek (11111, 11 i 111) i dwóch bloków złożonych z zer (0000 i 0).
Liczba binarna 1111111111111111 składa się z jednego bloku złożonego z jedynek.
Darmowe konto pozwoli wrócić do niego później.
Zapisz w pseudokodzie lub w wybranym języku programowania algorytm, który dla danej dodatniej całkowitej liczby n obliczy liczbę bloków w jej zapisie binarnym.
Przykład:
Dla liczby 67 wynikiem jest 3, ponieważ 67 w zapisie binarnym to 1000011 (dwa bloki jedynek i jeden blok zer).
Dla liczby 245 wynikiem jest 5, ponieważ 245 w zapisie binarnym to 11110101 (trzy bloki jedynek i dwa bloki zer).
Uwaga: W zapisie algorytmu możesz korzystać tylko z instrukcji sterujących, operatorów arytmetycznych: dodawania, odejmowania, mnożenia, dzielenia, dzielenia całkowitego i reszty z dzielenia; operatorów logicznych, porównań, instrukcji przypisania lub samodzielnie napisanych funkcji i procedur wykorzystujących powyższe operacje. Zabronione jest używanie funkcji wbudowanych oraz operatorów innych niż wymienione, dostępnych w językach programowania, w tym zwłaszcza funkcji zamiany między systemami pozycyjnymi i konwersji między typami danych.
Specyfikacja:
Dane: n – dodatnia liczba całkowita
Wynik: b – liczba bloków w zapisie binarnym liczby n
Algorytm:
b ← 1
poprzednia ← n mod 2
n ← n div 2
dopóki (n > 0)
cyfra ← n mod 2
jeśli cyfra ≠ poprzednia
b ← b + 1
poprzednia ← cyfra
n ← n div 2
poprawny algorytm, w tym:
za poprawną pętlę,
za poprawne porównywanie kolejnych cyfr binarnych,
za poprawne zliczenie liczby bloków, w tym rozpoznawanie końca/początku kolejnego bloku i ustawienia początkowe.
odpowiedź niepoprawna albo brak odpowiedzi.
Algorytm musi poprawnie obsługiwać zmianę bitu (przejście z jednego bloku do drugiego) i prawidłowo inicjalizować zmienne.
Ocena według schematu punktowania CKE, zwykle w 15–30 s
Dowiedz się, ile punktów naprawdę zdobywasz. Zrób zdjęcie kartki albo wklej odpowiedź: Maturownik+ porówna ją ze schematem punktowania, policzy punkty i wytłumaczy, gdzie i dlaczego je tracisz.