IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Алгоритм вычисления выражений в постфиксной форме, Си
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 151
Пол: Мужской
Реальное имя: иван

Репутация: -  0  +


Может кнонибудь подсказать алгоритм вычисления выражения(из строки) записанного в постфиксной форме.
Для выражений в инфиксной форме я знаю алгоритм а вот для постфиксной чето никак не соображу wacko.gif .
Напишите просто на словах что запихиваем в стек что и когда вынимаем и тд...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 151
Пол: Мужской
Реальное имя: иван

Репутация: -  0  +


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

#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
#define Len 2056
#define NAME 5
#define COM 4
#define MCOM 8



char per[Len]="(a+b)*(c-d)/(e*(q-w))",*pe=per,*pe2=pe,c;


char Stack[Len],*ST=Stack;

int i=0,k=0,m;


int precedence(char symb)
{
	switch(symb)
	{
		case ')':return -1;
	    case '(':return 0;
		case '+':return 1;
		case '-':return 1;
		case '*':return 2;
		case '/':return 2;
		//default : return -1;
	}
}


int main()
{	 

*ST='(';
while(*pe)
{
	if (isalpha(*pe))printf("%c",*pe);
	else
		if(*pe=='(')*++ST=*pe;
		else
			if(*pe==')')
			{
				while((c=*ST)!='('){ printf("%c",c);ST--;}	
				--ST;
			}
			else
				if(*pe=='+'||*pe=='-'||*pe=='*'||*pe=='/')
				{
					while(precedence(*ST)>precedence(*pe)||precedence(*ST)==precedence(*pe))
					{
						printf("%c",*ST);
						ST--;
					}
					*++ST=*pe;
				}
			   
		pe++;
				if(*pe==0)while(*ST!='(')printf("%c",*ST--);
}




return 0;
}




 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
blackhard   Алгоритм вычисления выражений в постфиксной форме   23.04.2008 22:00
volvo   RE: Алгоритм вычисления выражений в постфиксной форме   23.04.2008 22:11
blackhard   Блин я вдруг понял что мнеб и для инфиксной формы …   23.04.2008 22:45
blackhard   Ну ктонибудь помогите пожалуйста!!!…   24.04.2008 0:41
blackhard   Вобщем я сделал так сначало превожу выражения из и…   24.04.2008 19:19
blackhard   Помогите исправить код. Написал алгоритм для перев…   25.04.2008 0:34
volvo   Значит, не все... Вот тут лежит рабочая программа…   25.04.2008 2:07
blackhard   Значит, не все... Вот тут лежит рабочая программ…   25.04.2008 2:44
volvo   Именно так, если текущий знак - "+", то …   25.04.2008 3:11
blackhard   Именно так, если текущий знак - "+", то…   25.04.2008 3:19
blackhard   Рабочий алгоритм перевода из инфиксной формы в пос…   29.04.2008 22:46
blackhard   Теперь точно рабочий #include<stdio.h> #inc…   1.05.2008 4:39
volvo   С каких пор программа, не проходящая компиляцию (G…   30.04.2008 0:11
volvo   По ссылке, которую я тебе давал, есть алгоритм пер…   1.05.2008 6:28
blackhard   Блин чето запутался.Если у меня массив строк и ука…   1.05.2008 14:32
volvo   Ну, пока у тебя не массив строк, а массив указател…   1.05.2008 15:03
Сережа   Ребят а напишите этот алгоритм на паскале пжлст   11.02.2014 7:16
nishaknapp   Why not settling on games that is fun and at the s…   29.07.2022 18:43


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 28.04.2025 21:36
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name