Przeczytaj
Zadanie 1. Miłośnik piątki
Ulubioną cyfrą Antka jest 5. Jego ulubionymi urodzinami były te, kiedy kończył pięć lat, a gdy robi sobie zdjęcia ze znajomymi, pokazuje pięć palców. Pewnego dnia Antek postanowił napisać 200 unikalnych liczb całkowitych z przedziału <1, 1000>.
Nie zauważył jednak, że jego komputer był zainfekowany niegroźnym wirusem, który wykonał konwersję zapisanych przez niego liczb do systemu dwójkowego, czyli systemu liczbowegosystemu liczbowego o podstawie 2.
W pliku liczby.txt znajduje się 200 unikalnych liczb całkowitych z przedziału <1, 1000>, zapisanych w systemie dwójkowym.
liczby.txt.Ulubione liczby Antka to takie, w których w zapisie dziesiętnym występuje cyfra 5.
Napisz program, który spośród liczb zapisanych w systemie binarnym wybierze ulubione liczby Antka i zapisze je w systemie dziesiętnym. Każda liczba powinna zostać zapisana w osobnej linii.
Dla danych:
prawidłowa odpowiedź wygląda następująco:
Do oceny oddajesz:
plik
wynik.txtzawierający odpowiedź (liczby z plikuliczby.txt, które w zapisie dziesiętnym zawierają cyfrę 5; liczby zapisane w systemie dziesiętnym),plik(i) z komputerową realizacją zadania (kodem programu).
Przedstaw rozwiązanie w postaci programu w języku C++, Java lub Python. Odpowiedź do zadania znajdziesz w pliku umieszczonym po omówieniu rozwiązania.
Rozwiązanie
Rozwiązanie tego zadania przedstawimy w postaci pseudokodu.
Wykorzystamy algorytm zamiany liczb z systemu dwójkowego na dziesiętny. Jego implementacja może się różnić w zależności od wybranego języka. W pseudokodzie zostanie przedstawione ogólne działanie algorytmu. Gdy zamienimy liczbę z systemu dwójkowego na dziesiętny, sprawdzimy, czy w jej zapisie występuje cyfra 5. Jeżeli tak, wpiszemy tę liczbę do pliku wynikowego.
Dane z pliku
liczby.txtwczytujemy do tablicyliczby. [linia kodu 1]
Uwaga! Tablica nie jest konieczna – możemy wczytywać po jednym wierszu (czyli po jednej liczbie).Tworzymy zewnętrzną pętlę, która będzie przechodziła przez każdą liczbę w tablicy
liczby. [linia kodu 3]Wykonujemy algorytm zamiany liczby z systemu dwójkowego na dziesiętny. [linie kodu 4‑7]
Zamieniamy liczbę na napis, by sprawdzić, czy zawiera ona cyfrę 5. [linia kodu 9]
Przechodzimy przez każdą cyfrę w liczbie; jeżeli trafimy na cyfrę 5, wpisujemy tę liczbę do pliku wynikowego. [linie kodu 10‑13]
Zamykamy plik. [linie kodu 15–16]
W pseudokodzie wykorzystaliśmy funkcje: długość oraz napis. Mają one swoje odpowiedniki w językach programowania.
Odpowiedniki funkcji długość:
C++:
length()Java:
length()Python:
len()
Odpowiedniki funkcji napis:
C++:
to_string()Java:
Integer.toString()Python:
str()
W pseudokodzie wykorzystaliśmy funkcję całk(x). Przyjmuje ona napis x i zwraca jego wartość jako liczbę całkowitą.
Odpowiedniki funkcji całk:
C++:
stoi()Java:
Integer.parseInt()Python:
int()
Odpowiedź
Odpowiedź do zadania dla danych z pliku liczby.txt znajduje się w załączniku, w pliku wynik.txt:
wynik.txt.Słownik
zbiór reguł zapisywania liczb, określający m.in. zestaw znaków (symboli), za pomocą których przedstawiane są liczby, np. w systemie dwójkowym wykorzystywane są cyfry 0 i 1, w dziesiętnym – cyfry ze zbioru ⟨0, 9⟩, a w szesnastkowym – cyfry ze zbioru ⟨0, 9⟩ oraz litery od A do F