Seminář 11 (Úkoly)

Úkol č. 1

Vytvořte statickou metodu anyMatch, která bude mít dva argumenty: (i) kolekci hodnot a (ii) podmínku. Tato metoda bude vracet true, pokud některá hodnot z kolekce bude splňovat zadanou podmínku, jinak bude vracet false. Metodu vyzkoušejte pro různé typy hodnot a různé podmínky.

Úkol č. 2

Do třídy MyQueue z předchozího semináře doplňte podporu iterátoru a rozhraní Iterable. Iterátor nebude odebírat hodnoty z fronty a můžete předpokládat, že v průběhu procházení fronty nebude obsah fronty měněn.

Úkol č. 3

Do třídy MyPriorityQueue z předchozího semináře doplňte metodu forEach, která postupně (podle priority) odebere jednotlivé hodnoty z fronty a provede s nimi zadanou operaci. Můžete předpokládat, že v průběhu této operace nebude obsah fronty měněn jinak než metodou forEach.

Úkol č. 4

Vytvořte třídu RPNCalculator, která bude fungovat jako konfigurovatelná RPN kalkulačka.

Třída bude mít jednu veřejnou metodu int compute(String expression), která spočítá a vrátí hodnotu výrazu v obrácené polské notaci (např. "3 5 + 2 -").

Výpočet by měl probíhat v následujících krocích:

  1. výraz je rozdělen na čísla a operátory,
  2. a postupně se prochází zleva doprava
  3. pokud je na vstupu číslo, je vloženo na zásobník,
  4. pokud je na vstupu operátor, jsou z vrcholu zásobníku odebrány dvě hodnoty, na ty je aplikován operátor (např. operace sčítání) a výsledek je uložen zpět na zásobník.
  5. Výpočet končí, když je zpracován celý vstup a jako výsledek je vrácena hodnota na vrcholu zásobníku.

Konstruktoru třídy RPNCalculator bude předán slovník Map<String, BinaryOperator>, který bude definovat jednotlivé operace, se kterými kalkulačka bude umět pracovat.

Navrhněte vhodné rozhraní BinaryOperator.

Třídu vyzkoušejte použít s různými sadami operací.


Last update on 19. 9. 2025 01:14
Powered by Schemik.

© Petr Krajča, 2010, 2012
petr.krajca (at) upol.cz