Matura informatyka zbiór zadań. Zadanie 62 - Liczby ósemkowe

Kliknij i wspomóż mnie :)

python

Każdy przygotowywujący się do matury z informatyki spotyka się z różnymi zadaniami w języku c++. Obecnie coraz więcej szkół zaczyna korzystać z Python'a, a ja chcę w tej serii pokazać jak rozwiązywać przykładowe zadania.

Zadanie 62 z arkusza specjalnie przygotowywanych dla maturzystów zadań i rozwiązań skupia się na znajomości konwersji pomiędzy systemami liczbowymi.

Arkusz z zadaniami (Matura Zbiór zadań Informatyka) możesz znaleźć pod tym linkiem:

Matura Zbiór zadań Informatyka

Pliki do zadania z kolei znajdują się tutaj:

Github

Wczytywanie danych

W pliku liczby1.txt znajduje się 1000 liczb całkowitych dodatnich, zapisanych ósemkowo, maksymalnie sześciocyfrowych. Każda liczba umieszczona jest w osobnym wierszu. W pliku liczby2.txt znajduje się 1000 liczb całkowitych dodatnich, zapisanych dziesiętnie, maksymalnie sześciocyfrowych

Zadanie wymaga od nas wczytywania dwóch plików, stąd parametr source określa plik.

Funkcji openFile() używamy tu do utworzenia globalnych tablic do późniejszych zadań.

Systemy liczbowe

Przy takim rodzaju zadań warto napisać funkcję, która niezależnie wypisze nam liczby w dowolnym systemie.

Specjalnie ten kod jest w języku polskim, tak by łatwiej można było zrozumieć zasadę działania.

Wyszukaj w pliku liczby1.txt dwie liczby, najmniejszą i największą. Podaj wartości tych liczb w zapisie ósemkowym.

W pierwszym zadaniu operujemy tylko na wartościach w systemie ósemkowym.

Kolejność wykonywania kodu należy czytać od środka funkcji.

Najpierw kolejno wyszukujemy min i max wartość z tablicy. Później konwertujemy tą wartość na typ int.

Na samym końcu wywołujemy funkcję getInBase() z argumentem 8 (system).

Co ciekawe mimo, iż my mieliśmy podać odpowiedź w systemie ósemkowym. To w arkuszu odpowiedzi są one w systemie dziesiętnym.

Najdłuższy niemalejący ciąg

Znajdź najdłuższy niemalejący ciąg liczb występujących w kolejnych wierszach pliku liczby2.txt. Podaj pierwszy element tego ciągu oraz liczbę jego elementów. Możesz założyć, że jest jeden taki ciąg.

Pierwsze linijki odpowiadają za incjalizację zmiennych.

Poźniej każdy element jest rzutowany na typ int, tak by można było na nim wykonywać operację porównania.

Kod kolejno porównuje elementy z tablicy dataList czyli nasze liczby.

Jeśli kolejne wartości są rosnące lub stałe to dodaje je do bufora incr.

Jeśli następna liczba okaże się mniejsza to doda ostatni rosnący element, a później wybierze większy ciąg.

Porównywanie liczb

Porównaj wartości liczb zapisanych w wierszach o tych samych numerach w plikach liczby1.txt i liczby2.txt. Podaj liczbę wierszy, w których:

a) liczby mają w obu plikach taką samą wartość;
b) wartość liczby z pliku liczby1.txt jest większa od wartości liczby z pliku liczby2.txt.

W drugiej pętli wykonują się najważniejsze operacje. Najpierw liczby z systemu dziesiątkowego konwertowane są na ósemkowy.

Następnie wartości są sprawdzane pod względem warunków. Jeżeli któryś z warunków zostaje spełniony to przypisany mu licznik zwiększa wartość o jeden.

Występowanie liczby

Podaj, ile razy w zapisie dziesiętnym wszystkich liczb z pliku liczby2.txt występuje cyfra 6 oraz ile razy wystąpiłaby ta cyfra, gdyby te same liczby były zapisane w systemie ósemkowym.

Ostatnie zadanie okazuje się zaskakująco proste.

Iterując po wszystkich liczbach w pliku liczby2.txt. Najpierw rzutujemy liczbę na typ str.

Po stringach możemy z kolei iterować jak po tablicy. Póżniej wystarczy już tylko porównać konkretne cyfry (tutaj letter)

Dziękuję Ci za przeczytanie tego materiału 😀 Jeżeli spodobało Ci się to o czym piszę, możesz sprawdzić więcej materiałów na blogu lub udostępnić znajomym. Będzie mi bardzo miło 😊

O mnie

Jestem młodym programistą, który dumnie dzierży wiele pasji takich jak bieganie czy piwowarstwo domowe. Jedną z nich jest także programowanie i o tym właśnie zamierzam tutaj pisać.

Zobacz więcej

Najnowsze posty

Kliknij i wspomóż mnie :)

Zostańmy w kontakcie

* Wymagane
Kliknij i wspomóż mnie :)
shop
Otwórz Sklep Play

Zachęcam Cię do odwiedzenia mojej strony na Google Play store i sprawdzenia wszystkich moich aplikacji.