Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/145: Рейтинг темы: голосов - 145, средняя оценка - 4.81
139 / 60 / 13
Регистрация: 04.09.2011
Сообщений: 1,956
Записей в блоге: 1

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

11.02.2012, 12:02. Показов 27399. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Преобразовать выражение, составленное из цифр и знаков арифметических операций (+,-,*,/) в постфиксную форму. В постфиксной форме сначала записываются операнды, а затем знак операции.
Обычная запись
3+4
(5-4)*2
2*(3+4)*5

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

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

Добавлено через 1 час 55 минут
Кто то знает как это можно сделать
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.02.2012, 12:02
Ответы с готовыми решениями:

Преобразовать выражение в префиксной форме в постфиксную (C -> C++)
Помогите пожалуйста перевести программу на язык СИ. #include <cctype> #include <iostream> #include <string> typedef...

Перевести выражение из инфиксной формы в постфиксную
Помогите пожалуйста написать программу. Дана строка, в которой записано математическое выражение в инфиксной форме. В этой строке могут...

Преобразование в постфиксную форму
всем привет,нужна помощь с переводом из инфиксной формы в постфиксную форму.Есть наработки ,но работают они криво,помогите.из этого...

12
310 / 233 / 15
Регистрация: 01.07.2011
Сообщений: 812
Записей в блоге: 1
11.02.2012, 12:28
Цитата Сообщение от Sylar9 Посмотреть сообщение
функция есть кака это
стандартных функций нет

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

Добавлено через 46 секунд
Цитата Сообщение от Sylar9 Посмотреть сообщение
Постфиксная запись
еще это называется польская запись
0
139 / 60 / 13
Регистрация: 04.09.2011
Сообщений: 1,956
Записей в блоге: 1
11.02.2012, 12:49  [ТС]
Цитата Сообщение от remarkes Посмотреть сообщение
стандартных функций нет

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

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

Добавлено через 46 секунд
еще это называется польская запись
- читаешь выражение как строку посимвольно.
это надо объявить переменую string
0
310 / 233 / 15
Регистрация: 01.07.2011
Сообщений: 812
Записей в блоге: 1
11.02.2012, 13:24
Цитата Сообщение от 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;
}
0
139 / 60 / 13
Регистрация: 04.09.2011
Сообщений: 1,956
Записей в блоге: 1
11.02.2012, 13:50  [ТС]
Цитата Сообщение от 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;
}
а полность пример как выглядит должен
0
310 / 233 / 15
Регистрация: 01.07.2011
Сообщений: 812
Записей в блоге: 1
11.02.2012, 17:52
Цитата Сообщение от Sylar9 Посмотреть сообщение
а полность пример как выглядит должен
ну код надо думать, щас сижу думаю.
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
11.02.2012, 18:01
Обратная польская запись: примеры реализации
0
310 / 233 / 15
Регистрация: 01.07.2011
Сообщений: 812
Записей в блоге: 1
11.02.2012, 19:43
ru.wikipedia.org/wiki/Алгоритм_сортировочной_станции
Вложения
Тип файла: txt polsk_notation.c.txt (8.4 Кб, 446 просмотров)
0
310 / 233 / 15
Регистрация: 01.07.2011
Сообщений: 812
Записей в блоге: 1
11.02.2012, 20:01
Jupiter, то, что вы привели - это не совсем то. там пример вывода результата на основе введенного выражения в польской нотации, причем код на си нерабочий (не доделан). подобный пример (но естественно рабочий) был в K&R.
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
12.02.2012, 07:40
http://e-maxx.ru/algo/expressions_parsing
0
0 / 0 / 0
Регистрация: 25.12.2012
Сообщений: 3
25.12.2012, 22:06
помогите пожалуйста решить задачку на С#. Необходим код, работающий на линуксе
Дана формула.Перевести ее в постфиксную форму.Вычислить значение формулы в постфиксной форме.
Заранее огромнейшее спасибо
0
1 / 1 / 0
Регистрация: 05.03.2017
Сообщений: 1
28.03.2017, 18:51
Алгоритм перевода выражения в постфиксную запись следующий.

Константы и переменные кладутся в формируемую запись в порядке их появления в исходном массиве.
При появлении операции в исходном массиве:
если в стеке нет операций или верхним элементом стека является открывающая скобка, операции кладётся в стек;
если новая операции имеет больший* приоритет, чем верхняя операции в стеке, то новая операции кладётся в стек;
если новая операция имеет меньший или равный приоритет, чем верхняя операции в стеке, то операции, находящиеся в стеке, до ближайшей открывающей скобки или до операции с приоритетом меньшим, чем у новой операции, перекладываются в формируемую запись, а новая операции кладётся в стек.
Открывающая скобка кладётся в стек.
Закрывающая скобка выталкивает из стека в формируемую запись все операции до ближайшей открывающей скобки, открывающая скобка удаляется из стека.
После того, как мы добрались до конца исходного выражения, операции, оставшиеся в стеке, перекладываются в формируемое выражение.
1
28.03.2017, 19:04

Не по теме:

Вас не смутило, что теме 5 лет?

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.03.2017, 19:04
Помогаю со студенческими работами здесь

Неверный перевод в постфиксную форму
Реализация алгоритма перевода выражения в постфиксную форму и последующего вычисления. Проблема в том, что когда после скобок в выражении...

Преобразовать в постфиксную форму. Ассемблер
Комментарии к заданию: Программа должна иметь один или несколько вспомогательных модулей(хотя бы одна процедура должна быть...

Перевести выражение, записанное в обычной (инфиксной) форме в постфиксную форму
Помогите пожалуйста,по программированию, две задачки решить,просто дело таково,что преподаватель, просто скинул папку с книгами по...

Написать программу, которая переводит выражение, записанное в обычной (инфиксной) форме в текстовом файле infix, в постфиксную форму
Дали непростые задачи по программированию. Кто бы мог хотя бы ввести меня в дело? Постфиксной формой записи выражения aΔb...

Префикс форму в постфиксную (mulisp)
Пожалуйста, помогите из префиксной формы создать постфиксную: ( аргумент1 аргумент2 ... аргументN функция)


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru