Практикум по курсу "Объектно-ориентированное программирование" на языке C#. Андрианова А.А - 80 стр.

UptoLike

79
while(c == '*' || c == '/')
{
q.Enqueue(c);
if(s.Count != 0)
c = s.Pop();
else
{
f = false;
break;
}
}
}
// последний извлеченный символ помещается в
// стек, если выход из предыдущих циклов
// осуществился не по достижению конца стека
if(f)
s.Push(c);
// в стек помещается текущая операция
s.Push(str[i]);
}
break;
// если текущий символ '(', он записывается в стек
case '(':
s.Push(str[i]);
break;
// если текущий символ ')', из стека извлекаются
// все знаки операций до ближайшей '(',
// которая также извлекается из стека
case ')':
c = s.Pop();
while(c != '(')
{
q.Enqueue(c);
c = s.Pop();
}
break;
default:
// текущий символ – операнд.
// Он помещается в очередь
q.Enqueue(str[i]); break;
}
}
// формирования строки-результата, извлекая сначала
// все из очереди, а потом из стека
string res = "";
while(q.Count != 0)
res = res + q.Dequeue();
while(s.Count != 0)
res = res + s.Pop();
return res;
}
                          while(c == '*' || c == '/')
                         {
                            q.Enqueue(c);
                            if(s.Count != 0)
                                c = s.Pop();
                            else
                            {
                                f = false;
                                break;
                             }
                          }
                      }
                      // последний извлеченный символ помещается в
                      // стек, если выход из предыдущих циклов
                      // осуществился не по достижению конца стека
                      if(f)
                         s.Push(c);
                      // в стек помещается текущая операция
                      s.Push(str[i]);
                   }
                   break;
                // если текущий символ '(', он записывается в стек
                case '(':
                   s.Push(str[i]);
                   break;
                // если текущий символ ')', из стека извлекаются
                // все знаки операций до ближайшей '(',
                // которая также извлекается из стека
                case ')':
                    c = s.Pop();
                     while(c != '(')
                     {
                         q.Enqueue(c);
                         c = s.Pop();
                     }
                     break;
                default:
                   // текущий символ – операнд.
                   // Он помещается в очередь
                   q.Enqueue(str[i]); break;
             }
         }
         // формирования строки-результата, извлекая сначала
         // все из очереди, а потом из стека
         string res = "";
         while(q.Count != 0)
            res = res + q.Dequeue();
         while(s.Count != 0)
            res = res + s.Pop();
         return res;
     }

79