Для выражений в инфиксной форме я знаю алгоритм а вот для постфиксной чето никак не соображу

Напишите просто на словах что запихиваем в стек что и когда вынимаем и тд...
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
![]() |
blackhard |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: ![]() ![]() ![]() |
Может кнонибудь подсказать алгоритм вычисления выражения(из строки) записанного в постфиксной форме.
Для выражений в инфиксной форме я знаю алгоритм а вот для постфиксной чето никак не соображу ![]() Напишите просто на словах что запихиваем в стек что и когда вынимаем и тд... |
![]() ![]() |
blackhard |
![]()
Сообщение
#2
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: ![]() ![]() ![]() |
Помогите исправить код. Написал алгоритм для перевода из инфиксной формы в постфиксную но чето не верно работает
//строка с выражением после работы программы результат ab+lb/e-e* очевидно не правильно
char p[]="(a+b)*l/b-e",*po=p,c,*o,*s,t;
char Stack[Len],*ST=Stack;
//для записи в стек
char *PtoS( char c)
{
*(++ST)=c;
return ST;
}
//для извлечения из стека
char *PoP(void)
{
char *c0;
c0=ST;
ST--;
return c0;
}
int main()
{
PtoS('(');
while(*po)
{
if( *po=='+'||*po=='-')i=1;
if( *po=='*'||*po=='/')i=2;
if(isalpha(*po))printf("%c",*po);
if((*po=='+'||*po=='-'||*po=='*'||*po=='/'||*po=='(')&&(i>k||i==k))
{
if( *po=='+'||*po=='-')k=1;
if( *po=='*'||*po=='/')k=2;
PtoS(*po);
}
if(i<k)
{
printf("%c",*PoP());
PtoS(*po);
}
if (*po==')')
{
while((c=*PoP())!='(')
printf("%c",c);
}
po++;
//if(!*po)while((c=*PoP())!='(')printf("%c",c);
}
while((c=*PoP())!='(')printf("%c",c);
return 0;
}
Вроде все делал согласно алгоритму. |
![]() ![]() |
![]() |
Текстовая версия | 28.04.2025 23:17 |