Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

WIPING29 - Notacja Polska

Zadanie eliminacyjne w konkursie WIPING2 organizowanym przez
Wydział Informatyki Zachodniopomorskiego Uniwersytetu Technologicznego w Szczecinie

Notacja Polska

Jan Łukasiewicz, polski logik, zaproponował w roku 1920 nowy sposób zapisywania wyrażeń logicznych, który dzięki swoim unikalnym właściwościom pozwalał zapisać dowolnie złożone wyrażenie bez użycia nawiasów. Sposób ten daje się niemal bez modyfikacji zastosować także w arytmetyce, co będzie przedmiotem naszego zadania.

Notacja Łukasiewicza, w przeciwieństwie do notacji tradycyjnej zwanej "wrostkową" (bo operaratory "wrastają" między argumentami) jest nazywana "przedrostkową", bo operatory umieszcza się w niej przed argumentami, np:

+ 2 2

daje w wyniku 4, a:

/ 2 0

jest błędne, bo wymaga niewykonalnego dzielenia przez zero. Oczywiście, w notacji polskiej można zapisywać dowolnie długie ciągi operacji z wieloma operatorami np:

/ + 6 6 3

daje wyniku 4, bo jest równoważnik tradycyjnego wyrażenia (6 + 6) / 3 (tu juz nie możemy uniknąc użycia nawiasów).

Twoim zadaniem jest napisanie programu, który oblicza wartość wyrażenia zapisanego w notacji polskiej albo sygnalizuje bład, gdy nie jest to możliwe.

Przyjmujemy następujące założenia:

  • posługujemy się wyłącznie arytmetyką całkowitą, a więc wyrażenie
    / 10 3
    ma wartość 3 (a nie 3.333....)
  • używamy wyłącznie czterech podstawowych operatorów: + - / *
  • operatory i argumenty rozdzielane są przynajmniej jedną spacją
  • obliczenie wartości wyrażenia może się nie udać, gdy wymusza wykonanie dzielenia przez zera albo gdy liczba operatorów nie pasuje do liczby argumentów

 

Wejście

Nieznana z góry liczba linii tekstu, z których każdy zawiera wyrażenie w notacji polskiej nie dłuższe niż 1000 znaków. Wszystkie liczby, a także wszystkie wyniki pośrednich operacji mieszczą się w zakresie <-2147483648..2147483647>. Używa się wyłącznie czterech operatorów.

Wyjście

Tyle wierszy tesktu, ile było ich na wejściu, a każdy zawiera daną całkowitą będącą wartością wczytanego wyrażenia lub słowo ERR, jeśli wyrażenie było błędne. 

Przykład

Wejście:

+ / 2 2 2
/ 2 - 2 2
- 2 2 2

Wyjście:

3
ERR
ERR

Informacje dodatkowe

  • program zostanie uruchomiony 10 razy dla różnych zestawów danych

  • każde poprawne rozwiązanie daje 10% punktacji zadania

  • zadanie ma wartość punktową 5,0

 

Dodane przez:Sławomir Wernikowski
Data dodania:2014-01-02
Limit czasu wykonania programu:1s
Limit długości kodu źródłowego2500B
Limit pamięci:1536MB
Cluster: Cube (Intel G860)
Języki programowania:C CSHARP C++ 4.3.2 CPP C99 JAVA PAS-GPC PAS-FPC PERL PERL6 PHP PYTHON PYTHON3 PY_NBC RUBY
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.