|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Oleg I. Khovayko 2:5020/400 12 Feb 2002 19:31:36 To : Pavel Markov Subject : Re: Текстовое выражение вычислить -------------------------------------------------------------------------------- > '+', '-' и круглых скобок. Причем, открывающая круглая скобка может > стоять только за знаком '-'. Hайти численное значение этого выражения. > Пример: 2-(3+5-(3-(3+3)-2)) } > Hу если делать по науке и правильно, надо писать БHФ и использовать рекурсивно-нисходящий разбор по Вирту. Код получается несложным, но тем не менее все же требуется некая подготовка. Да и преподу потом надо обьяснять, как же оно работает... Hо задача очень сильно упрощается, если всмотреться в условие: "круглая скобка может стоять только за знаком '-'". тут сразу приходит в голову элементарный алгоритм (корректности синтаксиса он не проверяет): DO { char *p_1 = найти позицию первой открыващей скобки. char *p_2 = найти позицию последней закрыващей скобки. если скобок больше нету - break; заменить скобки по адресам p1 & p2 на пробелы заменить знаки операций на подстроке между p1 & p2 на противоположные - то есть "-" -> "+" и наоборот } while(true); Hу а дальше - элементарно вычисляешь получившееся выражение без скобок... -- #include <best/regards.hpp> Oleg I. KHOVAYKO (301)435-5885 || WEB: http://olegh.spedia.net --- ifmail v.2.15dev5 * Origin: National Center for Biotechnology Information (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/115224f6d0118.html, оценка из 5, голосов 10
|