(link do zadania, w pdf jest bardziej czytelne: ... a_PR_I.pdf)
Zadanie 2. Tablica zero-jedynkowa (8 pkt)
W tablicy a[1…1023] zapisano ciąg zer i jedynek w taki sposób, że wszystkie zera
poprzedzają jedynki.
Uwaga: W tablicy mogą być same zera lub same jedynki.
Oto niepełny algorytm obliczania liczby zer w tablicy a:
← – oznacza instrukcję przypisania
div – oznacza dzielenie całkowite
Kod: Zaznacz cały
liczba_zer ← 0
l ← 1, p ← 1023
dopóki l ≤ p wykonuj
s ←(l + p)div 2
jeśli a[s] =1 to
p←s − 1
w przeciwnym przypadku
liczba_zer ← liczba_zer + …………………
l ← …………………
obliczał on zawsze poprawnie liczbę zer z tablicy a.
Odpowiedź:
pierwsza luka: s - l + 1
druga luka: s + 1
Mógłby mi ktoś wytłumaczyć działanie tego kodu?
Wydaje mi się, że w ogóle nie sprawdza on 2 części tablicy.
Z góry dzięki za pomoc.