Пример #1
0
        private void PerformSingleOperation(SingleCalcOperation currentSingleCalcOperation)
        {
            wasSolvedBefore = true;

            if (!wasLastOperationInvalid)
            {
                double answer       = OperateOneNumber(currentSingleCalcOperation);
                string answerString = ReturnProperAnswerBasedIfInfinityOrNaN(answer);

                numberOneBuffer   = answerString;
                inputTextBox.Text = numberOneBuffer;
            }
        }
Пример #2
0
        private double OperateOneNumber(SingleCalcOperation currentSingleCalcOperation)
        {
            if (numberOneBuffer == String.Empty)
            {
                numberOneBuffer = "0";
                if (currentCalcOperator != CalcOperator.None)
                {
                    numberOneBuffer = inputTextBox.Text;
                }
            }
            else if (numberOneBuffer != inputTextBox.Text)
            {
                numberOneBuffer = inputTextBox.Text;
            }
            CheckDecimal(numberOneBuffer);

            double numberOne = Convert.ToDouble(numberOneBuffer);

            double result;

            switch (currentSingleCalcOperation)
            {
            case SingleCalcOperation.Factorial:
                if (numberOne < 0)
                {
                    result = Double.NaN;
                }
                else
                {
                    double roundedNumberOne = Math.Floor(numberOne);
                    result = CalculateFactorial(roundedNumberOne);
                }
                break;

            case SingleCalcOperation.Sine:
                result = Math.Sin(numberOne);
                break;

            case SingleCalcOperation.Cosine:
                result = Math.Cos(numberOne);
                break;

            case SingleCalcOperation.Tangent:
                result = Math.Tan(numberOne);
                break;

            case SingleCalcOperation.Logarithm:
                result = Math.Log(numberOne);
                break;

            case SingleCalcOperation.SquareRoot:
                result = Math.Sqrt(numberOne);
                break;

            case SingleCalcOperation.TenToPowerOf:
                result = Math.Pow(10, numberOne);
                break;

            case SingleCalcOperation.Squared:
                result = Math.Pow(numberOne, 2);
                break;

            case SingleCalcOperation.Exponential:
                result = Math.Exp(numberOne);
                break;

            default:
                result = numberOne;
                break;
            }

            return(result);
        }