5 / 7 / 3
Регистрация: 05.11.2011
Сообщений: 97
|
|
1 | |
Используя стек, определить функцию, которая переводит выражение в префиксную форму20.10.2012, 12:49. Показов 1361. Ответов 7
Метки нет (Все метки)
Есть задание - Используя стек, определить функцию, которая переводит выражение, записанное в обычной (инфиксной) форме в префиксную форму. Предусмотреть ввод выражения с клавиатуры и из текстового файла.
В принципе проблем нету, но такой вопрос - как мне проходиться по каждому символу по порядку? Вариант как запихнуть каждый символ в ячейку массива, но не катит так. Или используя string искать в цикле нужные элементы: скобки, символы..?
0
|
20.10.2012, 12:49 | |
Ответы с готовыми решениями:
7
Используя стек, описать функцию проверяющую, является ли стек пустым Clojure Используя функцию Defun, определить функцию f(a x), где а-S- выражение, а х-список, состоящий из 2-3 элементов, которая заменяет на а все атомы списка Написать программу, которая переводит выражение, записанное в обычной (инфиксной) форме в текстовом файле infix, в постфиксную форму Написать программу, которая преобразует выражение из инфиксной формы в префиксную |
5056 / 3116 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
24.10.2012, 11:20 | 3 |
sanchoflat, в дополнение к предыдущему ответу, посмотрите в сторону автоматных анализаторов; это только звучит страшно, а реализуется через обычный switch-case, надо только чуть-чуть включить мозг и составить автомат для вашего языка. Он будет простым, на вскидку 4 состояния.
0
|
5 / 7 / 3
Регистрация: 05.11.2011
Сообщений: 97
|
|
24.10.2012, 17:03 [ТС] | 4 |
честно не очень понимаю что это такое вообще. Разве нельзя просто пройтись по элементам string'а по очереди?
0
|
5056 / 3116 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
25.10.2012, 12:13 | 6 |
sanchoflat, автоматный анализатор и будет проходить по ним по-очереди. Просто у него есть формальное определение, его надо составить на бумажке, и тогда по нему программу написать не составит никакого труда. Ну а на счёт "не очень понимаю"... Вы искали?
0
|
5 / 7 / 3
Регистрация: 05.11.2011
Сообщений: 97
|
|
25.10.2012, 15:53 [ТС] | 7 |
silent_1991, первым делом загуглил, но статья на википедии и подобных сайтах об автоматном анализаторе не дала более конкретных знаний о том, как реализовать в программе.
В принципе выкрутился через array char'ов. Ими и оперирую пока что.
0
|
5 / 7 / 3
Регистрация: 05.11.2011
Сообщений: 97
|
|||||||||||
26.10.2012, 18:58 [ТС] | 8 | ||||||||||
Возникла проблема - делаю по алгоритму:
1. раскидываем знаки и операнды в разные стеки. если в выражении встречаем ')' то отыскиваем в стеке соответствущую левую скобку и все что выше '(' выталкиваем в стек с операндами. ( а после этого мы удаляем '(' ?) 2. Дальше проходим по выражению и если мы встречаем операнд, который по приоритету меньше чем верхний элемент стека или не является '(' то выталкиваем элементы из стека со знаками в стек с операндами, пока не встретим '(' или дно стека.
Добавлено через 1 час 32 минуты собственно поправил
0
|
26.10.2012, 18:58 | |
26.10.2012, 18:58 | |
Помогаю со студенческими работами здесь
8
Используя стек, написать процедуру или функцию, которая определяет количество вхождений буквы Е в файл Написать функцию, которая переводит градусы в радианы Написать функцию, которая переводит градусы в радианы Написать функцию,которая переводит градусы в радианы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |