IMPORT memory.calc
X = FACT 100
SCAN Y
// input from user …
Z = X / Y^20
A = ROUND Z 10
PRINT A
EXPORT memory.calc |
Calvodax
|
Calvodax is a calculator, that can represent numbers with unlimited precision.
Run using ```sh ./calvodax
export filename
import filename
factorial ( number ) round ( number ) floor ( number ) ceil ( number ) ```
| Aplikace: Kalkulačka s neomezenou přesností |
Termín odevzdání:
12.06.2023 11:59:59
Hodnocení:
0.0000
Max. hodnocení:
12.0000 (bez bonusů)
Odevzdaná řešení:
0 / 20
Nápovědy:
0 / 5
Práce s celými i desetinnými čísly (především načtení a vypsání proměnných).
Základní operace: sčítání, odčítání, násobení.
Pro celá čísla implementujte navíc celočíselné dělení a zbytek po dělení.
Funkce pro zaokrouhlení, faktoriál a umocňování (exponent je celé nezáporné číslo).
Stav kalkulačky (tedy její proměnné) je možné uložit do souboru v textově čitelné formě. Stejně tak je potom možné tento stav ze souboru obnovit.
Uložení v rámci proměnných (a souboru) musí být paměťově efektivní. Při ukládání proměnné do paměti se musí určit typ daného čísla. Rozlišujte alespoň řídká čísla (obsahují především nulové hodnoty, př. 10^10) a hustá čísla (opak řídkých, př. 100! / 10^20) a podle toho určete efektivní reprezentaci.
Základní operace (alespoň sčítání, odčítání a násobení) musí jít vnořovat pomocí závorek (př. (3 + X) * Y), závorky mohou být libovolně vnořené. Funkce a složitější operace mohou fungovat formou individuálních příkazů bez dalšího skládání (př. A = ROUND X -5).
Pro zapisování výrazů využijte prefixový (nebo postfixový) zápis, mají tu výhodu, že nevyžadují závorky a snáze se zpracovávají. V tomto případě však veškeré operace a funkce musí jít zapsat v jednom výrazu (př. A = ROUND MUL Y ADD 3 X -5).
IMPORT memory.calc
X = FACT 100
SCAN Y
// input from user …
Z = X / Y^20
A = ROUND Z 10
PRINT A
EXPORT memory.calc reprezentace čísel: řídká čísla, hustá čísla, …
operace: sčítání, odčítání, násobení, …
formáty exportu: textový, binární, …
uživatelské rozhraní: konzole, ncurses, SDL, OpenGL (různé varianty), …
Pro parsování výrazu se může hodit Shunting-Yard algoritmus (http://en.wikipedia.org/wiki/Shunting-yard_algorithm).
Pro uložení do souboru můžete využít i binární formát, v takovém případě dejte uživateli na výběr.
Nesnažte se ukládat čísla do textového řetězce, taková reprezentace je velice neefektivní.
Tato úloha je hodnocena automatem a následně vyučujícím. Nejprve úlohu odevzdejte a odlaďte na automatu, pak jedno Vámi vybrané řešení předejte k ohodnocení vyučujícím. Předání úlohy k hodnocení učitelem se provede tlačítkem "Předat vyučujícímu" u zvoleného řešení. Vyučující bude hodnotit pouze jedno Vaše řešení, vyučující nezačně hodnotit dokud mu úlohu nepčředáte. Dokud není úloha ohodnocena jak automatem tak i učitelem, nejsou přidělené žádné body (jsou zobrazována pouze dílčí hodnocení v procentech). </tbody>