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ę 100 liczb binarnych, każda zapisana w osobnym wierszu. Są one reprezentacją pomiarów temperatur w poszczególnych dniach. Wszystkie temperatury składają się z 10 cyfr.

Napisz program (lub programy), który sprawdzi, czy w danych znajdują się błędy. Za błąd uznawane są liczby mniejsze od -60 lub większe od 60. 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.

R1HM7wVEe5IAq

Przycisk służy do pobrania plik txt.

Plik tekstowy dane_a.txt
Plik TXT o rozmiarze 1.17 KB w języku polskim

Do oceny oddajesz:

  • plik odpowiedzi_a.txt z odpowiedzią (liczby z pliku dane_a przekonwertowane do systemu dziesiętnego lub komunikat BŁĘDNE DANE, jeżeli dane są błędne),

  • plik(i) z komputerową realizacją zadania (kodem programu).

Ważne!

Liczby w pliku z danymi zapisane są w systemie U2. Oznacza to, że najbardziej znaczący bit jest bitem znaku i ma wagę -2n-1, gdzie n 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 2). Założenie to powoduje, że liczby zaczynające się od bitu 1 są liczbami ujemnymi (-2n-1).

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ń.

11
Pokaż ćwiczenia:
1

JĘZYK C++

21
Ćwiczenie 1
RVrAsKQcVEmNK1
Wymyśl pytanie na kartkówkę związane z tematem materiału.
1

JĘZYK JAVA

21
Ćwiczenie 2
RgV2BmEwhEbLW1
Wybierz jedno nowe słowo poznane podczas dzisiejszej lekcji i ułóż z nim zdanie.
1

JĘZYK PYTHON

21
Ćwiczenie 3
RYslPxlU8mSXw1
Wymyśl pytanie na kartkówkę związane z tematem materiału.

Odpowiedzi do zadania

odpowiedzi_a.txt

R1YfX7sCzziPd

Przycisk służy do pobrania pliku txt, umożliwiającego pobranie odpowiedzi do zadania.

Plik TXT o rozmiarze 525.00 B w języku polskim

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ę 100 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 17 cyfr.

Rugi8t1U3OYG6

Przycisk służy do pobrania pliku txt.

Plik tekstowy dane_b.txt
Plik TXT o rozmiarze 1.85 KB w języku polskim

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 200 lub mniejsze niż -200. 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 pliku dane_b.txt zapisane w systemie dziesiętnym, o wartościach większych niż 200 lub mniejszych niż -200, każda liczba w osobnej linii),

  • plik(i) z komputerową realizacją zadania (kodem programu).

Ważne!

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ę -3n-1, gdzie n 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 3). Założenie to powoduje, że jeśli pierwsza cyfra liczby to 1 albo 2, to liczba jest liczbą ujemną (-3n-1).

Przykład 1

Dana jest liczba trójkowa 10001020200202002. Zaczynamy od konwersji – przekształcamy ją do liczby dziesiętnej. Pamiętajmy, że najwyższa potęga to znak liczby. Wynik to 663203.

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 -316, czyli -43046721, co daje (po przemnożeniu) liczbę -86093442.

Odejmujemy ją od liczby 43709924. Ostatecznie uzyskany wynik to -43709924.

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ń.

1

JĘZYK C++

31
Ćwiczenie 4
RO9v1icJTzsjT1
Wymyśl pytanie na kartkówkę związane z tematem materiału.
1

JĘZYK JAVA

31
Ćwiczenie 5
RLJVXm1TT26Kv1
Wymyśl pytanie na kartkówkę związane z tematem materiału.
1

JĘZYK PYTHON

31
Ćwiczenie 6
R1FwwbS21lsxL1
Wymyśl pytanie na kartkówkę związane z tematem materiału.

Odpowiedzi do zadania

odpowiedzi_b.txt

RBoS13CnYCdwE

Przycisk służy do pobrania pliku txt umożliwiającego pobranie odpowiedzi do zadania.

Plik TXT o rozmiarze 750.00 B w języku polskim