Нестандартный интерпретатор арифметического выражения - VB
Формулировка задачи:
Я не нашёл на форуме интерпретатора арифметического выражения.
Поэтому последние три дня только им и занимался. И предлагаю вашему
вниманию действующую программу. Дана форма, на форме кнопка,
результат выносится в заголовок формы.
Особенности программы:
1. Выполняет четыре арифметических действия
2. Функции: s(x)=sin(x), c(x)=cos(x), m(x)=abs(x), e(x)=(x)
Зачем нужна функция e(x) , если она ничего не делает??
Ну 0 тоже в числе ничего не делает, а без него плохо.
Арифметическое выражение выглядит примерно так (1+2)*(3+4), а в программе
так е(e(1+2)*e(3+4)). Это моё Ноу-хау!! В программе используется рекурсивная
процедура. При каждом обращении к ней уменьшается пара скобок. И когда она
не находит скобку это означает, что все вычислено! Конечно у программы пока
слабая защита от любопытного пользователя. Если он введет в текстовое поле
например такой текст "Саша+Маша" , то тут нужен другой интерпретатор, этот
такого сложения не знает. Тем не менее он помогает тому, кто в этом нуждается
Например вводится арифметическое выражение. Если скобки вводятся неверно,
то кнопка становится сразу красной. Если все верно, то кнопка зелёная.
Если число скобок непарное то кнопка жёлтая.
Предполагается дальнейшее совершенствование этой программы.
Буду рад любым вашим советам, замечаниям и пожеланиям
по адресу этой программы. Поскольку она довольно сложная, то я
не жду быстрого ответа.
форма
модуль
Решение задачи: «Нестандартный интерпретатор арифметического выражения»
textual
Листинг программы
Sub Test() Dim ev As Eval Set ev = New Eval ev.SetVar "A", "3" ev.SetVar "B", "4" ev.Scalc "(A^2+B^2)^0.5", Res$ Debug.Print Res$ ev.Scalc "max(1,2,4,-5)", Res$ Debug.Print Res$ Set ev = Nothing End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д