Sprawdź się
Zadanie 3. Stacja pogodowa
W pewnej stacji pogodowej każdego dnia dokonuje się odczytu temperatury. Uzyskana wartość zapisywana jest do bazy danych w postaci liczby binarnej. Pomiar przeprowadza się w skali Celsjusza. Z uwagi na częstą zmianę pracowników stacji zdarzają się błędy. Zwykle nie wynikają one jednak z niepoprawnego odczytania wartości temperatury, lecz z zastosowania innej skali, np. Fahrenheita lub Kelvina.
Zadanie 3.1
W pliku dane_a.txt
znajduje się liczb binarnych, każda zapisana w osobnym wierszu. Są one reprezentacją pomiarów temperatur w poszczególnych dniach. Wszystkie temperatury składają się z cyfr.
Napisz program (lub programy), który sprawdzi, czy w danych znajdują się błędy. Za błąd uznawane są liczby mniejsze od lub większe od . Dokonaj konwersji poszczególnych liczb na system dziesiętny, a gdy natrafisz na błąd, wypisz zamiast przekonwertowanej liczby komunikat BŁĘDNE DANE
. Wyniki zapisz do pliku odpowiedzi_a.txt
.
dane_a.txt
Do oceny oddajesz:
plik
odpowiedzi_a.txt
z odpowiedzią (liczby z plikudane_a
przekonwertowane do systemu dziesiętnego lub komunikatBŁĘDNE DANE
, jeżeli dane są błędne),plik(i) z komputerową realizacją zadania (kodem programu).
Liczby w pliku z danymi zapisane są w systemie U2. Oznacza to, że najbardziej znaczący bit jest bitem znaku i ma wagę , gdzie to liczba cyfr w liczbie. Wagi pozostałych bitów liczby pozostają bez zmian (są dodatnie i równe odpowiednim potęgom podstawy systemu liczbowego – w tym przypadku ). Założenie to powoduje, że liczby zaczynające się od bitu 1 są liczbami ujemnymi ().
Przedstaw rozwiązanie zadania w postaci programu w języku C++, Java lub Python. Zadbaj o prawidłowe wczytanie danych z pliku tekstowego do swojego programu. Odpowiedź do zadania dla danych z pliku znajdziesz pod sekcją ćwiczeń.
JĘZYK C++
JĘZYK JAVA
JĘZYK PYTHON
Odpowiedzi do zadania
odpowiedzi_a.txt
Zadanie 3.2
Jeden z pracowników stacji pogodowej zapomniał, że temperatury powinny być zapisywane w systemie binarnym, i umieścił w bazie danych temperatury w systemie trójkowym. Ponadto, przez chwilowy zanik łącza, do bazy danych trafiły błędne wartości temperatur.
W pliku dane_b.txt
znajduje się liczb w systemie trójkowym, każda zapisana w osobnym wierszu. Są one reprezentacją pomiarów temperatur w poszczególnych dniach. Wszystkie temperatury składają się z cyfr.
dane_b.txt
Napisz program, który dokona konwersji tych liczb na system dziesiętny i zapisze do pliku wynikowego te, które będą większe od lub mniejsze niż . Odpowiedzi zapisz do pliku odpowiedzi_b.txt
. Każda liczba powinna być zapisana w osobnej linii.
Do oceny oddajesz:
plik
odpowiedzi_b.txt
z odpowiedzią (liczby z plikudane_b.txt
zapisane w systemie dziesiętnym, o wartościach większych niż lub mniejszych niż , każda liczba w osobnej linii),plik(i) z komputerową realizacją zadania (kodem programu).
Liczby ujemne w pliku z danymi zapisane są tak, że pierwsza cyfra nadaje liczbie wartość ujemną. Oznacza to, że cyfra najbardziej znacząca jest cyfrą znaku i ma wagę , gdzie to liczba cyfr w liczbie. Wagi pozostałych cyfr liczby pozostają bez zmian (są dodatnie i równe odpowiednim potęgom podstawy systemu liczbowego – w tym przypadku ). Założenie to powoduje, że jeśli pierwsza cyfra liczby to albo , to liczba jest liczbą ujemną ().
Dana jest liczba trójkowa . Zaczynamy od konwersji – przekształcamy ją do liczby dziesiętnej. Pamiętajmy, że najwyższa potęga to znak liczby. Wynik to .
W kolejnym kroku sprawdzimy cyfrę najbardziej znaczącą pierwotnej liczby trójkowej. Jest różna od zera, zatem mamy do czynienia z liczbą ujemną. Musimy dokonać korekty wyniku.
Korekta polega na odjęciu od wartości obliczonej liczby w systemie dziesiętnym wartości pierwszej cyfry liczby trójkowej (z uwzględnieniem jej pozycji) pomnożonej przez dwa. W ten sposób wykonujemy zamianę znaku na przeciwny.
Dla naszego przykładu to , czyli , co daje (po przemnożeniu) liczbę .
Odejmujemy ją od liczby . Ostatecznie uzyskany wynik to .
Przedstaw rozwiązanie zadania w postaci programu w języku C++, Java lub Python. Zadbaj o prawidłowe wczytanie danych z pliku tekstowego do swojego programu. Odpowiedź do zadania dla danych z pliku znajdziesz pod sekcją ćwiczeń.
JĘZYK C++
JĘZYK JAVA
JĘZYK PYTHON
Odpowiedzi do zadania
odpowiedzi_b.txt