Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 Нужен совет в написании программы на С
Здравствуйте, уважаемые участники форума!
Мне нужен ваш совет в написании программы калькулятора выражений.

Выражения сложные: есть функции, пять бинарных операций + - * / ^, скобки и унарный минус. Как раз последний и побудил меня обратиться к вам.
Поясню: калькулятор я почти написал, пользуясь бесхитростным алгоритмом замены в строке, однако из-за унарного минуса логика алгоритма стабильно "горит".

У меня есть месяц и я хотел бы переписать эту программу на более толковую. Однако знаний по соответствующим алгоритмам для этого мне явно недостает. Поэтому и прошу мне подсказать хороший способ реализации и быть может подкинуть пару идей. Язык программирования - С.

 Re: Нужен совет в написании программы на С
Можно предварительно преобразовать унарный минус в "функцию" с другим обозначением (поскольку унарный минус может находиться только в самом начале выражения или после открывающей скобки, это несложно сделать). Однако правильнее было бы не возиться с преобразованиями строк, а написать парсер, преобразующий выражение в т.н. "обратную польскую запись".

Ну и, вообще говоря, язык для этой цели Вы выбрали не самый подходящий. Это критично?

 Re: Нужен совет в написании программы на С
Вот так это надо делать и никак, имхо, иначе.

 Re: Нужен совет в написании программы на С
Да вообще от унарного минуса откажитесь. И пишите $0-5$ вместо $-5$ и $4\cdot(0-3)$ вместо $4\cdot(-3)$

 Re: Нужен совет в написании программы на С
Pphantom, критика выбора языка не принимается по той причине, что это единственный язык, который я знаю :D , вообще говоря, изучаю.

 Re: Нужен совет в написании программы на С
вот так (то есть, вот так) это надо делать и никак, имхо, иначе.
ЗЫ а вообще-то, пора бы и самому научиться пользоваться гуглом.
ЗЗЫ критика выбора языка имхо неуместна.

 Re: Нужен совет в написании программы на С
_Ivana,iifat, спасибо, буду осваивать.

 [ Сообщений: 7 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group