Vyřešené úkoly budou zkontrolovány na semináři.
Napište program, který vezme vstupní řetězec (tokeny oddělené mezerou) a vyhodnotí jej jako RPN výraz. Program pracuje se zásobníkem. Čísla se na zásobník ukládají, operátory odebírají potřebný počet operandů, spočítají výsledek a ten vrátí zpět na zásobník.
Stack<T> jako struct (min. metody: push, pop, peek).Podporujte Int, Double (např. 3, 3.14, -2).
+ součet- rozdíl* součin/ dělení (dělení nulou musí vyhodit chybu)Relační operátory vrací 1 pro pravdu a 0 pro nepravdu.
>, <, ==neg změna znaménka (např. 5 neg → -5)Podporujte token ?: ve tvaru:
condition trueValue falseValue ?:
Význam:
condition != 0, výsledkem je trueValuefalseValuePořadí odebírání ze zásobníku při ?::
falseValuetrueValueconditionProgram musí detekovat a vhodně ošetřit alespoň tyto chyby (přes throws):
abc)5 1 2 + 4 * + 3 - → 14
1 10 20 ?: → 10
0 10 20 ?: → 20
5 3 4 > 100 200 ?: → chyba (zůstane hodnota navíc)
2 3 4 > 100 200 ?: + → 202
10 0 / → chyba (divisionByZero)
x=10, pak x 2 *)