Zkouška 26.1.2018

Základní kurs objektově orientovaného programování v C++. Třídy a objekty, zapouzdření, metody, plymorfismus. Abstraktní datové typy, přetěžování. Kontejnery, iterátory, algoritmy. Šablony, generické programování, kompilační polymorfismus. Výjimky. Bezpečné a přenositelné programování, vazby na OS.
Host

Zkouška 26.1.2018

Příspěvek 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)
Odpovědět

Zpět na „NPRG041 Programování v C++“