Files
Calculator/basecalc.cpp
T

67 lines
1.2 KiB
C++

#include "basecalc.h"
#include <iostream>
BaseCalculator::~BaseCalculator()
{}
int BaseCalculator::calculate(const Operation& op)
{
switch(op.type)
{
case OpType::Addition:
result = op.a + op.b;
break;
case OpType::Subtraction:
result = op.a - op.b;
break;
case OpType::Multiplication:
result = op.a * op.b;
break;
case OpType::Division:
if (op.b == 0)
{
std::cerr << "Invalid operation requested! Resetting the accumulator to 0";
result = 0;
}
else
result = op.a / op.b;
break;
case OpType::Modulo:
if (op.b == 0)
{
std::cerr << "Invalid operation requested! Resetting the accumulator to 0";
result = 0;
}
result = op.a % op.b;
break;
case OpType::Special:
result = special(op.a);
break;
default:
result = 0;
}
return result;
}
BaseCalculator::operator int()
{
return result;
}
int BaseCalculator::negate()
{
result = -result;
return result;
}
int BaseCalculator::special(int a)
{
return a * a;
}