Example #1
0
 //в цикле по три действия перекидываем с 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());
         }
     }
 }
Example #2
0
        //рекурсивно находим значение и возвращаем
        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);
                }
            }
        }