Problem A - Obszary szachownicy
Problem B - Analiza progu rentowności producenta
Problem C - Interpreter
Problem D - Milaż
Problem E - Pozycja drużyny
Problem F - Edytowanie liczb

 

 

1981

Problem C - Interpreter


Opis

Oto opis w notacji BNF (Backus-Naur Form) bardzo prostego języka programowania:

 

<cyfra> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<zmienna> ::= A | B | C | D | E
<operator> ::= + | - | *
<liczba> ::= <cyfra> | <cyfra> <cyfra>
<składnik> ::= <liczba> | <zmienna>
<wyrażenie> ::= <składnik> | <składnik> <operator> <składnik>
<polecenie> ::= <zmienna> = <wyrażenie> | STOP

 

Zauważ, że poniższe polecenia są poprawne w tym języku i posiadają oczywiste znaczenie:

 

A=4
B=33
C=A+B
D=62*B
STOP

 

Natomiast poniższe polecenia nie są poprawne w tym języku:

 

K=31      (K nie jest prawidłową zmienną)
B=962    
(liczba nie może posiadać więcej niż dwie cyfry)
C=-A     
(jednoargumentowy minus nie jest zdefiniowany)
D=A+B*C  
(dozwolony jest tylko jeden operator w wyrażeniu)
A = B + C
(nie są dozwolone spacje)

 

Masz napisać interpreter dla tego języka. Interpreter powinien akceptować poprawne polecenia aż do polecenie STOP. Gdy otrzyma polecenie STOP, powinien wypisać wszystkie przypisane zmienne oraz ich bieżący stan. Interpreter nie powinien wykonywać polecenia, jeśli wymaga ono wartości zmiennej, do której jeszcze nie została przypisana wartość. Program na wejściu będzie otrzymywał tylko poprawne składniowo polecenia w tym języku. Możesz założyć, że w danych wejściowych będzie obecne polecenie STOP. Również możesz założyć, że wielkość wszystkich zmiennych nie przekroczy zakresu 32 bitowych liczb całkowitych.

 

Specyfikacja wejścia

Na wejściu program otrzymuje ciąg wierszy, które zawierają kolejne polecenia do wykonania przez interpreter. Ostatni wiersz będzie zawsze zawierał polecenie STOP.

 

Specyfikacja wyjścia

Po otrzymaniu wiersza z poleceniem STOP program powinien wypisać wszystkie zmienne o przypisanej wartości oraz ich bieżącą zawartość.

 

Przykładowe dane wejściowe

A=5
D=6*A
C=D+60
STOP
 

Przykładowe dane wyjściowe

A=        5
C=       90
D=       30

 



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.