Exemplo n.º 1
0
        /// <summary>
        /// Cubes the number in the results box.
        /// </summary>
        private void btn_cube_Click(object sender, RoutedEventArgs e)
        {
            if (!thereWasError)
            {
                outResults.Text = Arithmetic.nthPower(Convert.ToDouble(outResults.Text), 3).ToString();

                //If it's too much, just say so.
                if (outResults.Text == "Infinity")
                {
                    outResults.Text = Messages.error_overflow;
                    outStatus.Text  = Messages.error_overflow;
                    thereWasError   = true;
                }
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Reciprocates the number in the results box.
 /// For example: The number "2" becomes the results of "1/2", "0.5"
 /// </summary>
 private void btn_recip_Click(object sender, RoutedEventArgs e)
 {
     if (!thereWasError)
     {
         if (outResults.Text != "0")                 //Putting to the power of -1 acts as reciprocating the number.
         {
             outResults.Text = Arithmetic.nthPower(Convert.ToDouble(outResults.Text), -1).ToString();
         }
         else                 //And throw an error if the number is zero
         {
             outResults.Text = Messages.error_DivZero;
             outStatus.Text  = Messages.error_DivZero;
             thereWasError   = true;
         }
     }
 }
Exemplo n.º 3
0
        /// <summary>
        /// Performs the operation requested and stores the number in the lastResults variable.
        /// </summary>
        public void performOperation()
        {
            //For the most part, this is the same as the btn_calculate_Click, but not setting isStarting to true,
            // and storing the answer in the lastResults variable.
            if (!thereWasError)
            {
                try
                {
                    switch (curOperation)
                    {
                    case "add":
                        outResults.Text = (lastResults + Convert.ToDouble(outResults.Text)).ToString();
                        lastResults     = Convert.ToDouble(outResults.Text);
                        break;

                    case "subtract":
                        outResults.Text = (lastResults - Convert.ToDouble(outResults.Text)).ToString();
                        lastResults     = Convert.ToDouble(outResults.Text);
                        break;

                    case "mult":
                        outResults.Text = (lastResults * Convert.ToDouble(outResults.Text)).ToString();
                        lastResults     = Convert.ToDouble(outResults.Text);
                        break;

                    case "divide":
                        if (outResults.Text != "0")
                        {
                            outResults.Text = (lastResults / Convert.ToDouble(outResults.Text)).ToString();
                            lastResults     = Convert.ToDouble(outResults.Text);
                        }
                        else
                        {
                            outStatus.Text  = Messages.error_DivZero;
                            outResults.Text = Messages.error_DivZero;
                            thereWasError   = true;
                        }
                        break;

                    case "log":
                        if (Convert.ToDouble(outResults.Text) > 0)
                        {
                            outResults.Text = Arithmetic.nthLogBase(lastResults, Convert.ToDouble(outResults.Text)).ToString();
                            lastResults     = Convert.ToDouble(outResults.Text);
                        }
                        else
                        {
                            outResults.Text = Messages.error_InvNumber;
                            outStatus.Text  = Messages.error_log.Replace("%s", Messages.error_log_base);
                            thereWasError   = true;
                        }
                        break;

                    case "yroot":
                        double rootNum = Convert.ToDouble(outResults.Text);
                        if (rootNum % 2.0 == 0)                                 //No negatives allowed
                        {
                            if (lastResults < 0)
                            {
                                outResults.Text = Messages.error_InvNumber;
                                outStatus.Text  = Messages.error_InvNumber;
                                thereWasError   = true;
                            }
                            else
                            {
                                outResults.Text = Arithmetic.nthRoot(lastResults, rootNum).ToString();
                                lastResults     = Convert.ToDouble(outResults.Text);
                            }
                        }
                        else                                 //Negatives allowed
                        {
                            if (lastResults < 0)
                            {
                                outResults.Text = "-" + Arithmetic.nthRoot(Math.Abs(lastResults), rootNum).ToString();
                                lastResults     = Convert.ToDouble(outResults.Text);
                            }
                            else
                            {
                                outResults.Text = Arithmetic.nthRoot(lastResults, rootNum).ToString();
                                lastResults     = Convert.ToDouble(outResults.Text);
                            }
                        }
                        break;

                    case "pow":
                        outResults.Text = Arithmetic.nthPower(lastResults, Convert.ToDouble(outResults.Text)).ToString();
                        lastResults     = Convert.ToDouble(outResults.Text);
                        break;

                    case "mod":
                        if (outResults.Text != "0")
                        {
                            outResults.Text = (lastResults % Convert.ToDouble(outResults.Text)).ToString();
                            lastResults     = Convert.ToDouble(outResults.Text);
                        }
                        else
                        {
                            outStatus.Text  = Messages.error_DivZero;
                            outResults.Text = Messages.error_DivZero;
                            thereWasError   = true;
                        }
                        break;
                    }
                    if (!thereWasError && (Double.IsInfinity(lastResults) || Double.IsInfinity(Convert.ToDouble(outResults.Text))))
                    {
                        outResults.Text = Messages.error_overflow;
                        outStatus.Text  = Messages.error_overflow;
                        thereWasError   = true;
                    }
                }
                //Also, catch those potential errors.
                catch (OverflowException)
                {
                    outResults.Text = Messages.error_overflow;
                    outStatus.Text  = Messages.error_overflow;
                    thereWasError   = true;
                }
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Calculates the final results from the numbers given and the operation(s) requested.
        /// </summary>
        private void btn_calculate_Click(object sender, RoutedEventArgs e)
        {
            if (!thereWasError)
            {
                if (!isStarting) //The potential constant is usually from the last number entered.
                {
                    potentialConstant = Convert.ToDouble(outResults.Text);
                }
                switch (curOperation)
                {
                case "add":     //Show the results from adding...
                    if (!isStarting)
                    {
                        outResults.Text = (lastResults + Convert.ToDouble(outResults.Text)).ToString();
                    }
                    else
                    {
                        outResults.Text = (Convert.ToDouble(outResults.Text) + potentialConstant).ToString();
                    }
                    break;

                case "subtract":     //...or subtracting...
                    if (!isStarting)
                    {
                        outResults.Text = (lastResults - Convert.ToDouble(outResults.Text)).ToString();
                    }
                    else
                    {
                        outResults.Text = (Convert.ToDouble(outResults.Text) - potentialConstant).ToString();
                    }
                    break;

                case "mult":     //...or multiplying...
                    if (!isStarting)
                    {
                        outResults.Text = (lastResults * Convert.ToDouble(outResults.Text)).ToString();
                    }
                    else
                    {
                        outResults.Text = (Convert.ToDouble(outResults.Text) * potentialConstant).ToString();
                    }
                    break;

                case "divide":     //...or dividing...
                    if (!isStarting)
                    {
                        if (outResults.Text != "0")     //Also if denominator is zero, throw an error.
                        {
                            outResults.Text = (lastResults / Convert.ToDouble(outResults.Text)).ToString();
                        }
                        else
                        {
                            outStatus.Text  = Messages.error_DivZero;
                            outResults.Text = Messages.error_DivZero;
                            thereWasError   = true;
                        }
                    }
                    else
                    {
                        outResults.Text = (Convert.ToDouble(outResults.Text) / potentialConstant).ToString();
                    }
                    break;

                case "log":     //...or logarithms...
                    if (Convert.ToDouble(outResults.Text) > 0)
                    {
                        outResults.Text = Arithmetic.nthLogBase(lastResults, Convert.ToDouble(outResults.Text)).ToString();
                    }
                    else     //Logarithms can't have a negative number.
                    {
                        outResults.Text = Messages.error_InvNumber;
                        outStatus.Text  = Messages.error_log.Replace("%s", Messages.error_log_base);
                        thereWasError   = true;
                    }
                    break;

                case "yroot":               //...or custom roots...
                    double rootNum = Convert.ToDouble(outResults.Text);
                    if (rootNum % 2.0 == 0) //Root is even. No negatives allowed.
                    {
                        if (lastResults < 0)
                        {
                            outResults.Text = Messages.error_InvNumber;
                            outStatus.Text  = Messages.error_InvNumber;
                            thereWasError   = true;
                        }
                        else
                        {
                            outResults.Text = Arithmetic.nthRoot(lastResults, rootNum).ToString();
                        }
                    }
                    else     //Root is odd. Negatives are allowed.
                    {
                        if (lastResults < 0)
                        {
                            //For some reason, this won't accept negative numbers... at all. So just add a negative sign if it's negative.
                            outResults.Text = "-" + Arithmetic.nthRoot(Math.Abs(lastResults), rootNum).ToString();
                        }
                        else
                        {
                            outResults.Text = Arithmetic.nthRoot(lastResults, rootNum).ToString();
                        }
                    }
                    break;

                case "pow":     //...or raising to powers...
                    outResults.Text = Arithmetic.nthPower(lastResults, Convert.ToDouble(outResults.Text)).ToString();
                    break;

                case "mod":     //...or the modulus operator.
                    if (!isStarting)
                    {
                        if (outResults.Text != "0")
                        {
                            outResults.Text = (lastResults % Convert.ToDouble(outResults.Text)).ToString();
                        }
                        else
                        {
                            outStatus.Text  = Messages.error_DivZero;
                            outResults.Text = Messages.error_DivZero;
                            thereWasError   = true;
                        }
                    }
                    else
                    {
                        outResults.Text = (Convert.ToDouble(outResults.Text) % potentialConstant).ToString();
                    }
                    break;
                }

                //Final result display if there was no error.
                if (!thereWasError)
                {
                    outStatus.Text = Messages.equalNum;
                }

                if (!thereWasError && (Double.IsInfinity(lastResults) || Double.IsInfinity(Convert.ToDouble(outResults.Text))))
                {
                    outResults.Text = Messages.error_overflow;
                    outStatus.Text  = Messages.error_overflow;
                    thereWasError   = true;
                }
                if (!thereWasError && (Double.IsNaN(lastResults) || Double.IsNaN(Convert.ToDouble(outResults.Text))))
                {
                    outResults.Text = Messages.error_InvNumber;
                    outStatus.Text  = Messages.error_InvNumber;
                    thereWasError   = true;
                }

                //Also, since the equal button was pressed, this is the final answer, and therefore, we're starting a new equation.
                isStarting = true;
            }
        }