Problem A - Bankowość
Problem B - Wiadomości sieciowe
Problem C - Łamanie szyfru
Problem D - Dekarze
Problem E - Części wspólne figur
Problem F - Szewc Olo
Problem G - Mikrokomputerowy sterownik wyłączników

 

 

 

1982

Problem G - Mikroprocesorowy sterownik wyłączników


Opis

Twoim zadaniem jest napisanie programu, który hipotetycznie mógłby pracować na komputerze sterującym 16 wyłącznikami w całym domu. Twój program może wykonywać następujące funkcje związane z wyłącznikami:

  1. Włączenie jednego lub wszystkich.
  2. Wyłączenie jednego lub wszystkich.
  3. Wykrycie stanu wyłącznika.

Właściciel domu ma posiadać następujące możliwości w tym programie:

  1. Polecić włączenie dowolnego wyłącznika lub wszystkich.
  2. Polecić wyłączenie dowolnego wyłącznika lub wszystkich.
  3. Sprawdzić stan dowolnego wyłącznika lub wszystkich.
  4. Określić porę wykonania rozkazów (1) lub (2) w każdym dniu.

Twój program nie posiada dostępu do zegara, więc czas będzie symulowany poprzez wejście. Czasy mają postać 24-ro godzinną, od 0000 do 2300. Jeśli na wejściu napotkasz wiersz o postaci "TIME 0400", to jest godzina czwarta nad ranem, aż do odczytania nowego wiersza z czasem. Ponieważ czas nie może iść do tyłu, to jeśli po wierszu "TIME 0400" pojawi się wiersz "TIME 0100", to będzie to oznaczało upływ 21 godzin. Czasy będą podawane w postaci 4 cyfr, gdzie minuty (dwie ostatnie cyfry) będą zawsze równe zero.

 

Specyfikacja wejścia

Dane dla programu pochodzą z wejścia. Wiersze wejściowe mogą posiadać polecenia w swobodnym formacie. Poleceniami są słowa TIME, ON, OFF, ?, ALL, AT, STOP. W obrębie wiersza polecenia i ich argumenty mogą pojawić się w dowolnym miejscu, rozdzielone co najmniej jedną spacją. W jednym wierszu będzie tylko jedno polecenie. Polecenia posiadają następującą składnię (gdzie # oznacza liczbę dziesiętną pomiędzy 1 a 16, która określa numer wyłącznika, a @ jest 4 cyfrową liczbą określającą czas):

 

# ON natychmiast włącz wyłącznik #
# OFF natychmiast wyłącz wyłącznik #
# ON AT @ każdego dnia o godzinie @ włącz wyłącznik #
# OFF AT @ każdego dnia o godzinie @ wyłącz wyłącznik #
? # wypisz bieżące ustawienie wyłącznika #
? ALL wypisz bieżące ustawienie wszystkich wyłączników
TIME @ przesuń symulowany czas do godziny @
STOP zakończ symulację, wyświetl wiadomość

 

Specyfikacja wyjścia

Twój program powinien na wyjściu wypisywać echo wszystkich danych wejściowych oraz wypisywać wiadomości z poleceń ? i STOP.

 

Przykład

Dane Znaczenie Podjęte działanie
1 ON Włącz przełącznik #1 Żadne
TIME 0700 Jest godzina 7:00 rano Żadne
? 1 Jaki jest stan wyłącznika #1? Wypisz SWITCH 1 ON
2 ON AT 1300       Włączaj wyłącznik 2 o 1:00 po południu Żadne
TIME 1300 Jest godzina 1:00 po południu Żadne
? ALL Jaki jest stan 16 wyłączników Wypisz
 1   2   3   4      16
ON  ON OFF OFF ... OFF
STOP Zatrzymanie symulacji Pisz SIMULATION END

 

Polecenie # ON AT @ ma być wykonane w momencie, gdy czas osiągnie stan @.

Jeśli jakiś wyłącznik ma być automatycznie włączany lub wyłączany o określonym czasie, tj. 7 ON AT 1000, to jego stan zostaje ustawiony na ON za każdym razem, gdy godzina 10:00 przewinie się w symulacji, chyba że zostanie to bezpośrednio anulowane przez polecenie 7 OFF AT 1000, Gdy w ten sposób ON kasuje OFF (lub OFF kasuje ON) , nic się nie dzieje o godzinie 10:00 - stan wyłącznika nie jest w żaden sposób zmieniany. Aby przełączyć system z automatycznego ON o godzinie 10:00 na automatyczne OFF o 10:00, potrzebne są dwa polecenia 7 OFF AT 1000.

Możesz założyć, że wszystkie polecenia zostaną poprawnie wprowadzone. W danym czasie nie będzie obowiązywało nigdy więcej niż 100 automatycznych poleceń ON i OFF. Początkowo wszystkie wyłączniki znajdują się w stanie OFF, a czas ma wartość 0000.

 



List do administratora Serwisu Edukacyjnego Nauczycieli I LO

Twój email: (jeśli chcesz otrzymać odpowiedź)
Temat:
Uwaga: ← tutaj wpisz wyraz  ilo , inaczej list zostanie zignorowany

Poniżej wpisz swoje uwagi lub pytania dotyczące tego rozdziału (max. 2048 znaków).

Liczba znaków do wykorzystania: 2048

 

W związku z dużą liczbą listów do naszego serwisu edukacyjnego nie będziemy udzielać odpowiedzi na prośby rozwiązywania zadań, pisania programów zaliczeniowych, przesyłania materiałów czy też tłumaczenia zagadnień szeroko opisywanych w podręcznikach.



   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2017 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.