Go to file
hladu357 9c5c3455f2 readme.md removed 2024-03-08 15:35:04 +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

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 |
  |   +------------+
  .
  .
  .