1 / 1 / 1
Регистрация: 17.10.2012
Сообщений: 14

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

14.05.2014, 15:23. Показов 4954. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно перевести арифметическое выражение в инфиксной записи в префиксную.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.05.2014, 15:23
Ответы с готовыми решениями:

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

Написать программу, которая преобразует выражение из инфиксной формы в префиксную
Используя класс Stack написать программу, которая преобразует выражение из инфиксной формы в префиксную. т.е. по такому принципу:

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

6
185 / 160 / 49
Регистрация: 30.07.2013
Сообщений: 508
14.05.2014, 21:37
Гугл тебе в помощь. Этот алгоритм есть на всех языках.
0
1 / 1 / 1
Регистрация: 17.10.2012
Сообщений: 14
14.05.2014, 23:08  [ТС]
Если честно, я долго искал, ничего не нашел. Если вас не затруднит скиньте ссылку на код.
0
185 / 160 / 49
Регистрация: 30.07.2013
Сообщений: 508
14.05.2014, 23:47
не то нашел.
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
15.05.2014, 00:01
10 секунд гугла
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/**
 * Convert arithmetic from infix to postfix
 *
 * @example 1 * ( 12 + 23 ) - ( 4 / 5 ) => 1 12 23 + * 4 5 / -
 * @author  Yong Su
 */
import java.util.Stack; 
import java.lang.StringBuilder;
 
class InfixToPostfix {
 
    public static void main(String[] args) {
        String infix = "1 * ( 12 + 23 ) - ( 4 / 5 )";
        String postfix = convert(infix);
        System.out.println(postfix);
    }
 
    /**
     * Perform the conversion
     *
     * @param expression Arithmetic infix format
     */
    public static String convert(String expression) {
        // Use StringBuilder to append string is faster than
        // String concatenation
        StringBuilder sb = new StringBuilder();
 
        // Use a stack to track operations
        Stack<Character> op = new Stack<Character>();
 
        // Convert expression string to char array
        char[] chars = expression.toCharArray();
 
        // The length of expression character
        int N = chars.length;
 
        for (int i = 0; i < N; i++) {
            char ch = chars[i];
 
            if (Character.isDigit(ch)) {
                // Number, simply append to the result
                while (Character.isDigit(chars[i])) {
                    sb.append(chars[i++]);
                }
                // Use space as delimiter
                sb.append(' ');
            } else if (ch == '(') {
                // Left parenthesis, push to the stack
                op.push(ch);
            } else if (ch == ')') {
                // Right parenthesis, pop and append to the result until meet the left parenthesis
                while (op.peek() != '(') {
                    sb.append(op.pop()).append(' ');
                }
                // Don't forget to pop the left parenthesis out
                op.pop();
            } else if (isOperator(ch)) {
                // Operator, pop out all higher priority operators first and then push it to the stack
                while (!op.isEmpty() && priority(op.peek()) >= priority(ch)) {
                    sb.append(op.pop()).append(' ');
                }
                op.push(ch);
            }
        }
 
        // Finally pop out whatever left in the stack and append to the result
        while(!op.isEmpty()) {
            sb.append(op.pop()).append(' ');
        }
 
        return sb.toString();
    }
 
    /**
     * Check if a character is an operator
     */
    private static boolean isOperator(char ch) {
        return ch == '^' || ch == '*' || ch == '/' || ch == '+' || ch == '-';
    }
 
    /**
     * Define the operator priority
     */
    private static int priority(char operator) {
        switch (operator) {
            case '^' : return 3;
            case '*' :
            case '/' : return 2;
            case '+' :
            case '-' : return 1;
        }
        return 0;
    }
 
}
0
185 / 160 / 49
Регистрация: 30.07.2013
Сообщений: 508
15.05.2014, 00:30
не то ты нашел. "Convert arithmetic from infix to postfix". ему надо в префиксную, а это в постфиксную.
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
15.05.2014, 01:01
ну значит надо написать в гугле пару других букв. Незнаю как ТС "долго" искал...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.05.2014, 01:01
Помогаю со студенческими работами здесь

Преобразование инфиксной записи арифметического выражения в префиксную
Доброго времени суток, ребята! Помогите с решением ЛР. Нужно используя только примитивы Lisp (car, cdr, cons, append (у меня есть её...

Преобразовать формулу из инфиксной формы записи в префиксную
Преобразовать формулу из инфиксной формы записи в префиксную на С++. Возможные символы (ABCD+*-!). Строка рандомно генерируется

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

Из инфиксной в префиксную запись
Задание: Переведите следующие выражение в префиксную нотацию: (5 + 4 + (2 − (3 − (6 + 4 / 5)))) / (3 * (6 − 2) * (2 − 7)) Делаю: ...

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru