Форум программистов, компьютерный форум CyberForum.ru

Преобразовать выражение в постфиксную форму - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 54, средняя оценка - 4.83
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
11.02.2012, 12:02     Преобразовать выражение в постфиксную форму #1
Преобразовать выражение, составленное из цифр и знаков арифметических операций (+,-,*,/) в постфиксную форму. В постфиксной форме сначала записываются операнды, а затем знак операции.
Обычная запись
3+4
(5-4)*2
2*(3+4)*5

Постфиксная запись
3 4 +
5 4 – 2 *
2 3 4 + * 5 *

я сначала думал с помощью switch но не подходит
Может кто алгоритм подскажит, или функция есть кака это

Добавлено через 1 час 55 минут
Кто то знает как это можно сделать
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2012, 12:02     Преобразовать выражение в постфиксную форму
Посмотрите здесь:

Преобразовать арифметическое выражение из постфиксной формы в инфиксную C++
Преобразовать в числа и вычислить арифметическое выражение C++
Перевести выражение из инфиксной формы в постфиксную C++
Преобразовать строку, содержащую выражение на Си C++
Логическое выражение преобразовать в бинарное дерево C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
remarkes
300 / 223 / 13
Регистрация: 01.07.2011
Сообщений: 809
Записей в блоге: 1
11.02.2012, 12:28     Преобразовать выражение в постфиксную форму #2
Цитата Сообщение от Sylar9 Посмотреть сообщение
функция есть кака это
стандартных функций нет

Добавлено через 5 минут
Цитата Сообщение от Sylar9 Посмотреть сообщение
Может кто алгоритм подскажит
собственно программа и будет алгоритмом. вкрадце так:
- читаешь выражение как строку посимвольно.
- находя знак, выводишь его после чисел (создаешь соответствующую функцию).
- находя скобки, ищешь внутри знак и убрав скобки, выводишь знак после чисел (предыдущая функция).

Добавлено через 46 секунд
Цитата Сообщение от Sylar9 Посмотреть сообщение
Постфиксная запись
еще это называется польская запись
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
11.02.2012, 12:49  [ТС]     Преобразовать выражение в постфиксную форму #3
Цитата Сообщение от remarkes Посмотреть сообщение
стандартных функций нет

Добавлено через 5 минут

собственно программа и будет алгоритмом. вкрадце так:
- читаешь выражение как строку посимвольно.
- находя знак, выводишь его после чисел (создаешь соответствующую функцию).
- находя скобки, ищешь внутри знак и убрав скобки, выводишь знак после чисел (предыдущая функция).

Добавлено через 46 секунд
еще это называется польская запись
- читаешь выражение как строку посимвольно.
это надо объявить переменую string
remarkes
300 / 223 / 13
Регистрация: 01.07.2011
Сообщений: 809
Записей в блоге: 1
11.02.2012, 13:24     Преобразовать выражение в постфиксную форму #4
Цитата Сообщение от Sylar9 Посмотреть сообщение
это надо объявить переменую string
это смотря на чем писать - на си или с++. я пишу на си.
имхо, достаточно char:
C
1
2
#define MAX_INPUT 256
char expr_cls[MAX_INPUT];
Начинаешь читать посимвольно. вначале у тебя два варианта:
- цифра
- скобка
то есть у нас условие. цифру можно проверить isdigit(expr_cls)

ветвление может понадобиться при определении оператора
C
1
2
3
4
5
6
7
8
9
10
11
12
char find_operator(char expr_cls[])
{
    int i;
    for (i=0; i<strlen(expr_cls); i++) {
        switch (expr_cls[i]) {
            case '+': case '-': case '*': case '/': 
            return expr_cls[i]; break;
            default: break;
        }
    }
    return 0;
}
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
11.02.2012, 13:50  [ТС]     Преобразовать выражение в постфиксную форму #5
Цитата Сообщение от remarkes Посмотреть сообщение
это смотря на чем писать - на си или с++. я пишу на си.
имхо, достаточно char:
C
1
2
#define MAX_INPUT 256
char expr_cls[MAX_INPUT];
Начинаешь читать посимвольно. вначале у тебя два варианта:
- цифра
- скобка
то есть у нас условие. цифру можно проверить isdigit(expr_cls)

ветвление может понадобиться при определении оператора
C
1
2
3
4
5
6
7
8
9
10
11
12
char find_operator(char expr_cls[])
{
    int i;
    for (i=0; i<strlen(expr_cls); i++) {
        switch (expr_cls[i]) {
            case '+': case '-': case '*': case '/': 
            return expr_cls[i]; break;
            default: break;
        }
    }
    return 0;
}
а полность пример как выглядит должен
remarkes
300 / 223 / 13
Регистрация: 01.07.2011
Сообщений: 809
Записей в блоге: 1
11.02.2012, 17:52     Преобразовать выражение в постфиксную форму #6
Цитата Сообщение от Sylar9 Посмотреть сообщение
а полность пример как выглядит должен
ну код надо думать, щас сижу думаю.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
11.02.2012, 18:01     Преобразовать выражение в постфиксную форму #7
Обратная польская запись: примеры реализации
remarkes
300 / 223 / 13
Регистрация: 01.07.2011
Сообщений: 809
Записей в блоге: 1
11.02.2012, 19:43     Преобразовать выражение в постфиксную форму #8
ru.wikipedia.org/wiki/Алгоритм_сортировочной_станции
Вложения
Тип файла: txt polsk_notation.c.txt (8.4 Кб, 312 просмотров)
remarkes
300 / 223 / 13
Регистрация: 01.07.2011
Сообщений: 809
Записей в блоге: 1
11.02.2012, 20:01     Преобразовать выражение в постфиксную форму #9
Jupiter, то, что вы привели - это не совсем то. там пример вывода результата на основе введенного выражения в польской нотации, причем код на си нерабочий (не доделан). подобный пример (но естественно рабочий) был в K&R.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
12.02.2012, 07:40     Преобразовать выражение в постфиксную форму #10
http://e-maxx.ru/algo/expressions_parsing
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2012, 22:06     Преобразовать выражение в постфиксную форму
Еще ссылки по теме:

C++ Преобразовать строку в выражение
C++ Преобразовать выражение используя функцию abs
Преобразовать выражение в префиксной форме в постфиксную (C -> C++) C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Лисёнок
0 / 0 / 0
Регистрация: 25.12.2012
Сообщений: 3
25.12.2012, 22:06     Преобразовать выражение в постфиксную форму #11
помогите пожалуйста решить задачку на С#. Необходим код, работающий на линуксе
Дана формула.Перевести ее в постфиксную форму.Вычислить значение формулы в постфиксной форме.
Заранее огромнейшее спасибо
Yandex
Объявления
25.12.2012, 22:06     Преобразовать выражение в постфиксную форму
Ответ Создать тему
Опции темы

Текущее время: 01:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru