#include #include #include using namespace std; class Calc { private: double m_nValue2; double m_nValue; public: Calc(double nValue) { m_nValue = nValue; }; double Add(double nValue) { m_nValue += nValue; return m_nValue;}; double Subtract(double nValue) { m_nValue -= nValue; return m_nValue;}; double Multiply(double nValue) { m_nValue *= nValue; return m_nValue;}; double Divide(double nValue) { m_nValue /= nValue; return m_nValue;}; double Modulus(double nValue) { m_nValue = fmod(m_nValue,nValue); return m_nValue;}; double Power(double nValue) { m_nValue = pow(m_nValue,nValue); return m_nValue;}; double Reciprocal() { m_nValue = 1/m_nValue; return m_nValue;}; double NthRoot(double index, double guess, double pc) { double result = guess; double result_next; do { result_next = (1/index)*((index-1)*result+(m_nValue)/(pow(result,(index-1)))); result = result_next; pc--; }while(pc>1); m_nValue = result; return m_nValue; }; double Factorial() { double result = m_nValue; double result_next; double pc = m_nValue; do { result_next = result*(pc-1); result = result_next; pc--; }while(pc>2); m_nValue2 = m_nValue; m_nValue = result; return m_nValue; } double Factorial2(int nValue) { double result = nValue; double result_next; double pc = nValue; do { result_next = result*(pc-1); result = result_next; pc--; }while(pc>2); nValue = result; return nValue; } double DoubleFactorial() { double result=m_nValue; double result_next; double pc = m_nValue; do { result_next = result*(pc-2); result = result_next; pc--; pc--; }while(pc>2); m_nValue2 = m_nValue; m_nValue = result; return m_nValue; } double Gamma() { double result = Factorial()/m_nValue2; m_nValue = result; return m_nValue; } double Tetrate(double pc) { double result = m_nValue; double result_next; do { result_next = pow(result,m_nValue); result = result_next; pc--; }while(pc>1); m_nValue = result; return m_nValue; } double EvaluateBinomialCoefficient(double nValue) { double result; result = (Factorial2(m_nValue))/(Factorial2(nValue)*Factorial2((m_nValue - nValue))); m_nValue = result; return m_nValue; } double GetValue() { return m_nValue;}; double SetValue(double nValue) { m_nValue = nValue;}; }; int main() { double start; unsigned int operation; double operand; double operand2; double iterations; cout<<"What shall be your starting value?"; cin>>start; Calc cCalc(start); do { cout<<"Select an operation, please.\n\n1. Addition\n2. Subtraction\n3. Multiplication\n4. Division\n5. Modulus\n6. Exponentiation\n7. Tetration\n8. Reciprocal\n9. Nth Root\n10. Factorial\n11. Double Factorial\n12. Gamma Function\n13. Evaluate Binomal Coefficient\n14. Set Value\n15. Show Value\n\n"; cin>>operation; cin.ignore(); cout<>operand; cin.ignore(); cCalc.Add(operand); cout<>operand; cin.ignore(); cCalc.Subtract(operand); cout<>operand; cin.ignore(); cCalc.Multiply(operand); cout<>operand; cin.ignore(); cCalc.Divide(operand); cout<>operand; cin.ignore(); cCalc.Modulus(operand); cout<>operand; cin.ignore(); cCalc.Power(operand); cout<>operand; cin.ignore(); cCalc.Tetrate(operand); cout<>operand; cin.ignore(); cCalc.Reciprocal(); cout<>operand; cin.ignore(); cout<<"Select a guess for the root, please."; cin>>operand2; cin.ignore(); cout<<"How many iterations of the algorithm?\n"; cin>>iterations; cin.ignore(); cCalc.NthRoot(operand,operand2,iterations); cout<>operand; cCalc.EvaluateBinomialCoefficient(operand); cout<>operand; cin.ignore(); cCalc.SetValue(operand); cout<