Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Центр помощи > [C++] Проверка арифметического выражения |
Автор: СтудентИзРоссии 17.2.2007, 04:31 |
Доброй день. Необходима помощь в написании алгоритма по проверке арифметического выражения. Если у кого-то есть опыт в написании подобного алгоритма на C, подскажите как? Может быть есть готовое решение? p.s. Схема (пример) арифметического выражения в прикреплённом файле. |
Автор: ip127001 17.2.2007, 09:16 |
перегрузка опереторов |
Автор: Daevaorn 17.2.2007, 10:55 |
очень сочитается |
Автор: MAKCim 17.2.2007, 11:09 |
СтудентИзРоссии, у тебя ж готовая схема есть, бери и пиши прямо в лоб |
Автор: СтудентИзРоссии 17.2.2007, 13:36 | ||||
Не могли бы привести пример?
Вы правы, схема есть, она понятна, но с реализацией проблема, не могли бы Вы помочь? Будем признательны. |
Автор: Earnest 17.2.2007, 15:29 |
Для домашних заданий, курсовых, существует "Центр Помощи". Тема перенесена! |
Автор: СтудентИзРоссии 17.2.2007, 18:48 | ||
Спасибо, может и правда кто-то сможет помочь. |
Автор: Бонифаций 17.2.2007, 18:53 | ||
тебе надо 1) лексический анализатор - который из строки (или файла) будет делать поток лексем. Согласно синтаксической диаграмме Вирта (которую ты привел) у тебя могут быть лексемы: * / + - целое буква , [ ] для реализации подойдет например strtok. 2) синтаксический анализатор. разбирает поток лексем в соответствии с теми диаграммами которые ты привел. Вирт давал инфо какой тип диаграммы должен соответствовать какой конструкции языка (на паскале правда). то есть у тебя должно быть что - то типа
Остаток допишу позже |
Автор: Xenon 17.2.2007, 19:25 | ||
Если нужен просто обрезаный парсер, то чего-нибудь типа :
|
Автор: СтудентИзРоссии 17.2.2007, 20:20 | ||||
Необходим простой анализатор, который проверяет запись на её правильность. Например: 1+2*3/3+ABC[123]-ASD+100 (верная запись) Например: 3434+ewrwer...,.,%$ (неверная запись). Будем очень благодарные, если сможете помочь. Xenon, спасибо за код, но к сожалению, на некоторых правильных записях программа выдаёт неверный результат, например есть запись "2+4/2+1+1+3+2+3*1/3", а программа говорит о неправильном операторе в записе. |
Автор: Бонифаций 18.2.2007, 00:15 | ||
тебе прям готовую надо? ну вот на тех принципах что я писал:
Добавлено @ 00:17 я писал навскидку, не проверяя, так что сами тестируйте Добавлено @ 00:22 ps/ Я писал на С, ориентируясь на исходное сообщение, где был вопрос именно по С. Если надо именно на C++ - сами уж доведите. Там собственно добавьте обрабтку ошибок не с помощью exit а через exception и будет нормально |
Автор: СтудентИзРоссии 18.2.2007, 00:51 | ||||
Огромное Вам СПАСИБО! Работает!!! |
Автор: bigmaik 31.1.2012, 05:17 |
Здравствуйте! А можете эту же программу в Pascal написать??? Добавлено через 20 секунд Здравствуйте! А можете эту же программу в Pascal написать??? Добавлено через 1 минуту и 50 секунд Здравствуйте! А можете эту же программу в Pascal написать??? |