The Graphing Calculator allows users to input mathematical expressions and generate corresponding graphs. With essential features like zooming, scrolling, and a history bar, it provides a smooth experience for exploring mathematical concepts. Additionally, the application stores previous functions in a text file for easy access and recall across sessions.
- Graph Visualization: Input mathematical functions and visualize their graphs.
- Zoom and Scroll: Zoom in/out and scroll around the graph for detailed analysis.
- History Bar: Easily access and select previous functions from the history bar.
- Function Persistence: Store functions in a text file for easy retrieval across sessions.
Our graphing calculator leverages a variety of technologies to provide its functionality:
- RPN (Reverse Polish Notation): Used for parsing mathematical expressions efficiently.
- Shunting Yard Algorithm: Converts infix expressions to postfix notation, facilitating evaluation.
- SFML (Simple and Fast Multimedia Library): Provides the graphical user interface for drawing graphs.
- Arrays, Linked Lists, Stack, Queue: Data structures used for managing history and processing expressions.
- Tokenizer: Splits input expressions into tokens for parsing and evaluation.
To run the Graphing Calculator locally, follow these steps:
- Clone the GitHub repository.
- Navigate to the project directory:
- Compile the application using your preferred C++ compiler.
- Configure CMake and run main.cpp.
To use the Graphing Calculator, follow these steps:
- Enter a mathematical function in the input field.
- Press the "Plot" button to visualize the graph of the function.
- Use zoom and scroll features to navigate around the graph.
- Access previous functions from the history bar and select them for plotting.
Contributions to the Graphing Calculator are welcome! If you'd like to contribute, please follow these steps:
- Fork the repository.
- Create a new branch for your feature or fix.
- Make your changes and ensure tests pass.
- Open a pull request detailing your changes.
This project is licensed under the MIT License.