Go to file
hladu357 9d9a768bdd readme format fix 2024-03-08 15:33:15 +01:00
doc/dot calc 2024-03-08 15:27:04 +01:00
examples calc 2024-03-08 15:27:04 +01:00
src calc 2024-03-08 15:27:04 +01:00
Doxyfile calc 2024-03-08 15:27:04 +01:00
Makefile calc 2024-03-08 15:27:04 +01:00
README readme format fix 2024-03-08 15:33:15 +01:00
README.md calc 2024-03-08 15:27:04 +01:00

README.md

#Kalkulačka racionálních čísel

Interaktivní terminálová kalkulačka

##Struktura programu: Instance třídy CParser zpracovává algebraické výrazy v LL1 gramatice (viz. doc/dor/grammar.dot) Pamatuje si proměnné a řídí dodaný saver.

Ze zadaných výrazů složí strom na jehož vrchol zavolá rekurzivní eval()

Abstraktní třída CPrintable zastřešuje veškeré výstupy z parseru, tedy čísla a operace. Její potomci imlepentují metodu eval() kterou se rekurzivně vyhodnotí celý strom operací. Polymorfismus zajištěje že operandy můžou být jak čísla tak jiné operace.

Kalkulačcka implementuje exaktní operace pro racionální čísla, celočíselné modulo, a proximaxi logaritmů a exponenciel.

+-------------------------+ +---------------------------+ | CPrintable abstract | | CParser | |-input from parser | | parses input into | |-output to UI |--+ | tree of CPrintables | | SPrintableValue *eval() | | | | +-------------------------+ | +---------------------------+ | | | +-------------------------+ | +---------------------------+ | COperator abstarct |<-+->| CRational | | CPrintable *operandB | | CBigInt *deniminator | | CPrintable *operandA | | CBigInt *numerator | | | | | +-------------------------+ +---------------------------+ | | +-----------+ +---------------------------+ +-->| CAdittion | | CBigInt | | +-----------+ | CBigInt *add( CBigint *) | | | CBigInt *sub( CBigint *) | | +----------------+ | CBigInt *mul( CBigint *) | +-->| CMultipication | +---------------------------+ | +----------------+ | | +------------+ +-->| CFactorial | | +------------+ . . .