SmartCalc v2.0 is a comprehensive C++ program designed to provide advanced mathematical functionality, including expression calculation, graph plotting, and specialized financial calculators. The program follows the C++17 standard, adheres to the Google coding style, and employs the Model-View-Controller (MVC) pattern for clear separation of concerns.
- Full coverage of arithmetic expressions in infix notation.
- Support for integers, real numbers (with a dot), and exponential notation.
- Verifiable accuracy of the fractional part up to 7 decimal places.
- Bracketed arithmetic expressions with a wide range of operators and mathematical functions.
- Visualization of mathematical functions given by infix expressions with the variable 'x.'
- Implementation of MVC pattern ensures separation of business logic from the view.
- Display of coordinate axes, scale markings, and an adaptive grid.
- Limited domain and codomain to numbers from -1000000 to 1000000.
- Console-based and GUI-based interfaces using Qt libraries compatible with C++17.
- User-friendly input with support for up to 255 characters.
- Calculation triggered by pressing the '=' symbol.
- Strict adherence to the MVC pattern to maintain clean separation of concerns.
- Thin controllers with no interface code.
- No business logic in the view code.
- Specialized mode for calculating credit-related parameters.
- Inputs: total credit amount, term, interest rate, and type (annuity or differentiated).
- Outputs: monthly payment, overpayment on credit, total payment.
- Specialized mode for calculating deposit profitability.
- Inputs: deposit amount, term, interest rate, tax rate, payment periodicity, interest capitalization, replenishments list, partial withdrawals list.
- Outputs: accrued interest, tax amount, deposit amount by the end of the term.
- Utilizes a Makefile with standard GNU targets (all, install, uninstall, clean, dvi, dist, tests).
- Provides flexibility in choosing the installation directory.
Users are encouraged to provide feedback on their experience with the Pedago Team, aiming to improve the educational experience.