|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
18.05.2021, 17:55 | #1 |
Пользователь
Регистрация: 22.04.2021
Сообщений: 12
|
Преобразование в обратную польскую запись с++
Код:
|
18.05.2021, 20:44 | #2 | |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,550
|
Не надо на себя наговаривать:
Цитата:
Насколько помнит мой склероз курс АЯиЧМ - прежде чем реализовывать, надо расписать грамматику создаваемого языка: набор символов, набор правил и т.п. Если короче - какие будут операнды: константы, переменные, целые, вещественные и т.д. Проверка синтаксиса - нужна или предполагается, что входная строка корректна. А уж потом преобразовывать. https://ru.wikipedia.org/wiki/Обратная_польская_запись Последний раз редактировалось digitalis; 18.05.2021 в 20:49. |
|
18.05.2021, 21:13 | #3 |
Пользователь
Регистрация: 22.04.2021
Сообщений: 12
|
digitalis, ну во первих,я сам писал,а не знаю какая ошибка,просто на екран ничего не виводит в строку
|
18.05.2021, 21:41 | #4 | |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
Оно не ничего не выводит, а падает. Во-первых, сделать "stack* poland = nullptr;", а то указатель не инициализирован, во-вторых, заменить NULL на nullptr, раз уж на плюсах пишем. После этого получаем что-то чуть более осмысленное:
Цитата:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
|
18.05.2021, 21:44 | #5 |
Пользователь
Регистрация: 22.04.2021
Сообщений: 12
|
BDA, Да чет мусор какойто
|
18.05.2021, 23:02 | #6 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
Просто несколько раз дернули pop при пустом стеке. Но код еще отлаживать и отлаживать. Замечания при беглом просмотре: source_line должен быть большей длины, раз добавляются пробелы; не должно быть присвоений в expression; не должно быть сравнений с source_line; нет проверки на парность скобок (открывающая скобка одного вида, а закрывающая - другого); бесконечный цикл при несогласованности скобок (нет открывающей скобки для найденной закрывающей).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
18.05.2021, 23:16 | #7 |
Пользователь
Регистрация: 22.04.2021
Сообщений: 12
|
BDA,
Код:
Код:
|
19.05.2021, 00:53 | #8 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
Это нужно править в другом if.
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
19.05.2021, 01:00 | #9 |
Пользователь
Регистрация: 22.04.2021
Сообщений: 12
|
BDA,
Код:
|
19.05.2021, 01:04 | #10 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
Потому что все тело ифа "if (isOperation(expression[i]) && (source_line[i] != '('))" и while в конце тоже требуют исправлений. Например, while:
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
Последний раз редактировалось BDA; 19.05.2021 в 01:13. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программа которая вычисляет польскую инверсную запись на С++ или Паскаль | Casillas1 | Помощь студентам | 5 | 05.11.2014 16:07 |
Превод из инфиксной в обратную польскую запись | Anny_Apple | Помощь студентам | 0 | 11.04.2011 19:22 |
Перевод из инфиксной записи в обратную польскую | Anny_Apple | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 10.04.2011 20:49 |
Задача на обратную польскую запись | Horknee | Помощь студентам | 8 | 11.03.2009 22:09 |
Pascal Перевод в Польскую запись | ЮнПрог | Помощь студентам | 3 | 29.12.2008 13:51 |