如何在静态堆栈中进行乘法和除法?

时间:2018-10-20 15:49:42

标签: c# rpn

这是我在制作RPN计算器时得到的静态数组。 RPN计算器从该代码中进行加法和减法。现在,我需要扩展代码以进行乘除运算,但是我不知道如何操作。 公共类IntStack     {

    private const int maxsize = 10;
    private int top = 0;
    private int[] array = new int[maxsize];

    public void Push(int value)
    {
        array[top++] = value;
    }

    public int Pop()
    {

        return array[--top];
    }

    public int Peek()
    {
        return array[top - 1];
    }

    public bool IsEmpty()
    {
        return top == 0;

    }

    public bool IsFull()
    {
        return top == maxsize;
    }




    public string Print()
    {
        StringBuilder output = new StringBuilder();
        for (int i = top - 1; i >= 0; i--)
            output.Append(array[i] + Environment.NewLine);
        return output.ToString();
    } 

}

1 个答案:

答案 0 :(得分:1)

有些方法可以添加到IntStack类中,这些方法将执行乘法和除法运算。我添加了最少的错误检查。

    public void Multiply()
    {
        if (array.Length < 2)
            return;

        var factor1 = Pop();
        var factor2 = Pop();
        Push(factor1 * factor2);
    }

    public void Divide()
    {
        if (array.Length < 2)
            return;

        var numerator = Pop();
        var divisor = Pop();

        if (divisor == 0) { // Return stack back to original state.
            Push(divisor);
            Push(numerator);
            return;
        }

        Push(numerator / divisor);
    }