Skip to content
Open
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
62 changes: 62 additions & 0 deletions calcnew.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
#include <iostream>
#include <stdexcept>

class Calculator {
private:
int currentValue;

public:

Calculator(int initialValue = 0) : currentValue(initialValue) {}


static int calculate(const int& value1, const int& value2, const char& operation) {
switch (operation) {
case '+': return value1 + value2;
case '-': return value1 - value2;
case '*': return value1 * value2;
case '/':
if (value2 == 0) {
throw std::invalid_argument("Error: Division by zero!");
}
return value1 / value2;
default:
throw std::invalid_argument("Error: Unknown operation!");
}
}

Calculator& calculate(const int& value, const char& operation) {
currentValue = calculate(currentValue, value, operation);
return *this;
}


int GetCurrentValue() const {
return currentValue;
}


Calculator& Reset(int newValue = 0) {
currentValue = newValue;
return *this;
}
};
int main() {

int staticResult = Calculator::calculate(10, 10, '+');
std::cout << "Static result: " << staticResult << std::endl;


Calculator my_calc;


int chainResult = my_calc.calculate(2, '+')
.calculate(4, '+')
.calculate(5, '-')
.calculate(10, '*')
.GetCurrentValue();

std::cout << "Chain result: " << chainResult << std::endl;

return 0;
}