Stránka 1 z 1

Zkouška 26.1.2018

Napsal: 29. 1. 2018 13:35
od Host
Měli jsme naimplementovat postfixní kalkulačku, která navíc podporovala multinomy (např. x^2 + xy + z^3, zkrátka víc proměnných).

V postfixním zápise se například 1 + 1 zapíše jako 1 1 +. Ideální implementace je ukládat výrazy na stack.

Na vstupu mohli být (oddělené alespoň jedním whitespacem) následující výrazy:
číslo (kladné i záporné, stačila velikost int) = uloží se na vrchol stacku
proměnná (string skládající se jen z písmen) = uloží se na vrchol stacku
+ = sečíst poslední dva výrazy a na stacku je nahradit jejich součtem
- = odečíst poslední dva výrazy a na stacku je nahradit jejich rozdílem
* = vynásobit poslední dva výrazy a na stacku je nahradit jejich součinem
? = vypsat poslední výraz na stacku
# = dropnout poslední výraz na stacku
^číslo = umocnit poslední výraz na zadané číslo (stačilo implementovat cyklem)
@proměnná = derivace posledního výrazu podle zadané proměnné
=proměnná = dosadit za proměnnou v předposledním výrazu poslední výraz

Z posledních tří stačilo implementovat jenom dva. Zadávající napověděl, že výrazy je nejlepší ukládat jako mapu <term, koeficient termu> a term zase jako mapu <proměnná, její mocnina>. Stejné termy se samozřejmě měli sečíst.

Dával 0-30 bodů za základní funkce, dalších 0-20 bodů za poslední tři složitější funkce a navíc 0-10 bodů za hezký kód (const reference a tak)