как умножить и разделить на статический стек? - PullRequest
0 голосов
/ 20 октября 2018

Это статический массив, который мне дали при создании калькулятора 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 голосов
/ 20 октября 2018

Вот некоторые методы, которые вы можете добавить в свой класс 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);
    }
...