![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 11.10.2009
Сообщений: 8
|
![]()
Всем доброго времени суток.
Пишу курсовую по данной теме и столкнулся с проблемой реализации операторов "[" и "]" языка brainfuck. Вроде понятно, как они работают, но при попытке реализации на C++ сталкиваюсь с проблемой не корректной работы. Прошу помощи) |
![]() |
![]() |
![]() |
#2 |
Участник клубаДжуниор
Регистрация: 23.08.2008
Сообщений: 1,616
|
![]()
Используем стек.
Примерно по такому алгоритму можно сделать: 1) Если следующий символ открывающаяся скобка, то помещаем ее позицию в стек. 2) Если следующий символ закрывающаяся скобка, то проверяем текущую ячейку на ноль. Если она равна нулю, то выбрасываем значение из стека и переходим на следующий символ, иначе ставим указатель на позицию скобки из вершины стека.
pushl $0x18E3DF6B
call ICQ |
![]() |
![]() |
![]() |
#3 |
Регистрация: 11.10.2009
Сообщений: 8
|
![]()
а без стеков реализовать можно?
просто со стеками не сильно дружу. |
![]() |
![]() |
![]() |
#4 |
Участник клубаДжуниор
Регистрация: 23.08.2008
Сообщений: 1,616
|
![]()
А пора бы подружиться. Очень полезная и нужна вещь.
Почитать можно здесь. Нужны лишь методы top, push и pop. Здесь суть работы стека.
pushl $0x18E3DF6B
call ICQ |
![]() |
![]() |
![]() |
#5 |
Регистрация: 11.10.2009
Сообщений: 8
|
![]()
спасибо большое) буду грызть)
|
![]() |
![]() |
![]() |
#6 |
Участник клубаДжуниор
Регистрация: 23.08.2008
Сообщений: 1,616
|
![]()
Набросал:
Код:
pushl $0x18E3DF6B
call ICQ Последний раз редактировалось russian-stalker; 01.05.2011 в 15:47. |
![]() |
![]() |
![]() |
#7 |
Регистрация: 11.10.2009
Сообщений: 8
|
![]()
ну со стеком вроде более менее (по крайней мере для моего случая) ясно.
вопрос ещё такой, я пишу на winapi и не могу нормально вывести интерпретированный результат. case '.': SetWindowText (hEditC, ????); break; у меня pointer объявлен, как char *pointer, я не использовал std::map. поэтому вторым аргументом я писал pointer, но при этом после результата в hEditC дописывался оставшийся код из первого Edit'a. подскажите пожалуйста. обработка нажатия кнопки "интерпретировать" Код:
Последний раз редактировалось Alex_under; 01.05.2011 в 17:32. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
BrainFuck | anGeee | Помощь студентам | 1 | 04.08.2016 13:37 |
Процедурный Brainfuck | tunyash | Софт | 0 | 17.06.2010 08:55 |
Интерпретатор | Volkodav2411 | Фриланс | 6 | 04.02.2010 21:17 |
Интерпретатор Паскаля | SvetickPro | Помощь студентам | 1 | 17.10.2008 22:00 |
командный интерпретатор | <Dusha> | Общие вопросы C/C++ | 4 | 16.08.2008 18:27 |