diff --git a/README b/README new file mode 100644 index 0000000..b439db9 --- /dev/null +++ b/README @@ -0,0 +1,47 @@ +Kalkulačka racionálních čísel + +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 | + | +------------+ + . + . + . \ No newline at end of file