Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions Src/Simple_Calculator/Calculator.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#include "Calculator.h"
using namespace std;

double Calculator::add(double a, double b) const {
return a+b;
}

double Calculator::subtract(double a, double b) const {
return a-b;
}

double Calculator::multiply(double a, double b) const {
return a*b;
}

double Calculator::divide(double a, double b) const {
if (b==0.0) {
throw invalid_argument("Division by zero is undefined");
}
return a/b;
}
17 changes: 17 additions & 0 deletions Src/Simple_Calculator/Calculator.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#pragma once
#include <stdexcept>

class Calculator {
public:
// Adds two numbers
double add(double a, double b) const;

// Subtracts b from a
double subtract(double a, double b) const;

// Multiplies two numbers
double multiply(double a, double b) const;

// Divides a by b; throws invalid_argument on division by zero
double divide(double a, double b) const;
};
23 changes: 23 additions & 0 deletions Src/Simple_Calculator/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,26 @@ The program is designed using **Object-Oriented Programming (OOP)** principles,
- Clear and readable code

---

## Build & Run

Files added:
- `Calculator.h` - Calculator class declaration
- `Calculator.cpp` - Calculator class implementation
- `main.cpp` - Interactive console program

Build (requires g++ and C++17):

```powershell
g++ -std=c++17 -Wall -Wextra -O2 main.cpp Calculator.cpp -o calculator.exe
```

Run:

```powershell
.\calculator.exe
```

Usage:
- Enter a number, an operator (+, -, *, /), and a second number. Type `q` at any prompt to quit.

52 changes: 52 additions & 0 deletions Src/Simple_Calculator/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
#include <iostream>
#include <string>
#include <stdexcept>
#include "Calculator.h"
using namespace std;

int main() {
Calculator calc;
cout << "Simple C++ Calculator\n";

while (true) {
double a, b;
char op;

cout << "\nEnter an operator (+ - * /) or type 'q' to quit: ";
if (!(cin >> op) || op == 'q') {
break;
}

if (op != '+' && op != '-' && op != '*' && op != '/') {
cout << "Invalid operator. Please use +, -, *, or /. Try again.\n";
continue;
}

cout << "Enter first number: ";
if (!(cin >> a)) {
cout << "Invalid number input. Quitting.\n";
break;
}

cout << "Enter second number: ";
if (!(cin >> b)) {
cout << "Invalid number input. Quitting.\n";
break;
}

try {
double result = 0.0;
switch (op) {
case '+': result = calc.add(a, b); break;
case '-': result = calc.subtract(a, b); break;
case '*': result = calc.multiply(a, b); break;
case '/': result = calc.divide(a, b); break;
}
cout << "Result: " << a << " " << op << " " << b << " = " << result << "\n";
} catch (const exception &ex) {
cout << "Error during calculation: " << ex.what() << "\n";
}
}
cout << "Thanks for using the Calculator!\n";
return 0;
}
Loading