//в цикле по три действия перекидываем с 1 на 2, на 3 и с 2 на 3 static void move(MyStack <int> a, MyStack <int> b) { if (a.Count > 0 && b.Count == 0) { b.Push(a.Pop()); } else if (a.Count == 0 && b.Count > 0) { a.Push(b.Pop()); } else if (a.Count > 0 && b.Count > 0) { if (a.Peek() < b.Peek()) { b.Push(a.Pop()); } else { a.Push(b.Pop()); } } }
//рекурсивно находим значение и возвращаем static int Task10(MyStack <char> St) { if (St.Count == 1 && Char.IsDigit(St.Peek())) { return(St.Pop()); } else { int num1, num2, result; char op = St.Pop(); St.Pop();// убираем скобку перед операцией if (Char.IsDigit(St.Peek())) { int c = (int)St.Pop() - (int)'0'; num1 = c; St.Pop(); } else { num1 = Task10(St); } if (Char.IsDigit(St.Peek())) { int c = (int)St.Pop() - (int)'0'; num2 = c; St.Pop(); } else { num2 = Task10(St); } int min, max; if (num1 > num2) { max = num1; min = num2; } else { max = num2; min = num1; } if (op == 'M') { return(max); } else { return(min); } } }