Объектно-ориентированное программирование на C++. Андрианова А.А - 163 стр.

UptoLike

Объектно-ориентированное программирование на С++
}
// выделение памяти для символьной строки
// с представлением числа
char* strnumber = new char [n + 1];
int i = 0;
// формирование строкового представления записи числа
// путем извлечения значений из стека
try
{
while(true)
{
n = s.PopElement();
if(n < 10)
strnumber[i] = '0' + n;
else
strnumber[i] = 'A' + n - 10;
i++;
}
}
catch(ListException& )
{
// когда стек становится пустым,
// представление числа сформировано
strnumber[i] = '\0';
}
return strnumber;
}
Задача 2. Дана символьная строка, содержащая правильно
записанное арифметическое выражение. Написать функцию перевода
выражения в постфиксную форму. Постфиксной формой выражения
называется такая запись, в которой знак операции следует за операндами.
Эта запись не содержит скобок. Например, выражение a * b в
постфиксной форме имеет вид ab *, a * b+c преобразуется в ab * c +, a *
(b + c) – в abc + *.
Для решения задачи можно использовать следующий алгоритм.
Рассматриваются поочередно все символы строки. В стек записывается
открывающая скобка, и выражение далее анализируется посимвольно
слева направо.
1. Если встречается операнд (число или переменная), то он
помещается в очередь.
2. Если встречается открывающая скобка, то она заносится в стек.
3. Если встречается закрывающая скобка, то из стека извлекаются
находящиеся там знаки операций до ближайшей открывающей
163
                           Объектно-ориентированное программирование на С++
          }
          // выделение памяти для символьной строки
          // с представлением числа
          char* strnumber = new char [n + 1];
          int i = 0;
          // формирование строкового представления записи числа
          // путем извлечения значений из стека
          try
          {
               while(true)
               {
                    n = s.PopElement();
                    if(n < 10)
                         strnumber[i] = '0' + n;
                    else
                         strnumber[i] = 'A' + n - 10;
                    i++;
               }
          }
          catch(ListException& )
          {
               // когда стек становится пустым,
               // представление числа сформировано
               strnumber[i] = '\0';
          }
          return strnumber;
     }

      Задача 2. Дана символьная строка, содержащая правильно
записанное арифметическое выражение. Написать функцию перевода
выражения в постфиксную форму. Постфиксной формой выражения
называется такая запись, в которой знак операции следует за операндами.
Эта запись не содержит скобок. Например, выражение a * b в
постфиксной форме имеет вид ab *, a * b+c преобразуется в ab * c +, a *
(b + c) – в abc + *.
     Для решения задачи можно использовать следующий алгоритм.
Рассматриваются поочередно все символы строки. В стек записывается
открывающая скобка, и выражение далее анализируется посимвольно
слева направо.
      1. Если встречается операнд (число или переменная), то он
          помещается в очередь.
      2. Если встречается открывающая скобка, то она заносится в стек.
      3. Если встречается закрывающая скобка, то из стека извлекаются
          находящиеся там знаки операций до ближайшей открывающей
                                                                        163