
keks-n писал(а):Баян.
s <> ""
If s = "" Then
If Len(s) = 0 Then
2) Твой эвалюатор говорит, что 12! будет 2. Really?
3) ... что 10 * 20 * 30 * 40 будет 200. (хотя будет 240000 )
4) ... что 65536/256/16/4 будет 256 (хотя будет 4)
5) ... что cos(cos(1)) будет .... Type mismatch.
6) ... что 10 / -2 будет тоже что-то нехорошее.
С cos там трабла вылезает потому, что автор почему то меняет точки на запятые...
Хакер писал(а):7) Я бы сделал перевод в RPN. А потом эвалюацию. С поддержкой букв и User-Defined функций.
Ну 12! он говорит будет 12 (а не 2) но это потому что факториалы я просто забыл...
burik, все же зацени мои змечания то! Главное прибей замену точек на запятые!!!! А то прям как торанн видиеть Type Mismatch при попытки вычисления 0.5+0.5 !!!!
Щаз полезу анализировать...
З.Ы. Забвно, евалютатор пытется убедить меня в том, что 56+4-sin(45+2)) равно 607... С чего бы так много? Остальной мир считает, что 59.8764268772548... Или это из области, что "в военное время значение синуса может достигать любой нужной величины"?
Case "-"
If i = 1 Then
curE = "-"
ElseIf (curChar = "(") Or (curChar = "+") Or _
(curChar = "-") Or (curChar = "*") Or (curChar = "/") Then
Case "-"
If i = 1 Then
curE = "-"
ElseIf (Mid$(strBE, i - 1, 1) = "(") Or _
(Mid$(strBE, i - 1, 1) = "+") Or _
(Mid$(strBE, i - 1, 1) = "-") Or _
(Mid$(strBE, i - 1, 1) = "*") Or _
(Mid$(strBE, i - 1, 1) = "/") Then
З.З.Ы. Факториал таки не считаем?
З.З.З.Ы. Повозился с тригонометрией... Лучше бы не возился... результаты бреддддд - типа выражение cos(3.14/2) к моменту вычисления косинуса становится cos(3)... Что-то неладно в датском королевстве...
strExp = Left$(strExp, i - 1) & _
curExp & _
Mid$(strExp, CBInStr(i, strExp) - 1)
strExp = Left$(strExp, i) & _
curExp & _
Mid$(strExp, i + CBInStr(i, strExp))
Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 3