Інтерпретатор математичних формул на vb

Ну все добре, формула є, тільки як же тепер її порахувати? Першою виникла думкою було те, що завдання не нова, і напевно хтось десь вже робив подібне. Пошук в Інтернеті приніс деякі результати, але, чесно кажучи, засмутив мене тим, що все що я знайшов було або основний ідейної лінією, яка була і так зрозуміла, або це були готові програми, типу строкового калькулятора.

Корисним виявився тільки один приклад на Дельфі, в якому дана задача вирішувалася, але по-перше, все одно треба було переписувати на VB, а по-друге, там було все на стільки складно зроблено, що дивно, як це взагалі працює.

З цього, було прийнято рішення писати самостійно. І ось що з цього вийшло.

Отже, що збій представляє будь-яка формула, з математичними функціями, зведення в ступінь і дужками? Це послідовність дій, які необхідно здійснити з елементами формули, щоб отримати в результаті результат. Всі дії мають різний пріоритет. Нам необхідно навчити комп'ютер здійснювати ці дії.

Будь-яка формула, скільки б у ній елементів і операцій не було, завжди спрощується до простої арифметики з чотирма типами математичних операцій: +, -, /, *.

50 + sin (1) * cos (0) / (450 / (78 + 45)) розраховуючи послідовно вирази всередині дужок і функції отримаємо:

50 + 0 * 1 / 3.65 - ось функція, спрощена до простих арифметичних операцій.

Висновок: перше, що необхідно запрограмувати - "движок", який би вмів вважати такі вирази з чотирма найпростішими арифметичними діями.

Нам необхідно представити текстову рядок, яка не має ніякого смислового навантаження для VB в такому вигляді, щоб ми могли працювати з елементами формули як з окремими самостійними елементами, тобто цифрами і знаками арифметичних виразів. Причому повинна зберігатися зв'язок між ними і порядок дій. Перший вихід, який видався мені реальним - масив. Отже,

P.S. Движок готовий. Все реально працює, але:

По-друге: Це тільки движок, і формули з дужками і функціями він не вважає. Щоб працювати з дужками, необхідно послідовно інтерпретувати вирази всередині дужок, замінювати їх у формулі отриманим результатом, і, в підсумку, інтерпретувати спрощене вираз. З функціями те ж саме.

P.P.S. У мене все це працює (включаючи дужки і т.д.). Будуть питання - пишіть.