Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.07;
Скачать: CL | DM;

Вниз

Калькулятор   Найти похожие ветки 

 
Mihey_temporary ©   (2004-08-23 15:58) [640]


> Унарный плюс не может быть слагаемым. Унарный плюс - это
> только часть слагаемого. Из любой нормально составленной
> грамматики это сразу видно. И любой калькулятор, реализованный
> в строгом соответствии с такой грамматикой, проблем с подобными
> выражениями не испытывает. Пример - компилятор Delphi, который
> такие выражения понимает правильно.


... и ссылка на мат. справочник?


 
Суслик ©   (2004-08-23 16:04) [641]

о чем вы спорите?
Если о том, что без знания теории можно построить калькулятор, то согласен с обоими.
Если долго мучиться, что-нибудь получится. Если же знать теорию, то получится и быстрее и качественнее.


 
Григорьев Антон ©   (2004-08-23 16:36) [642]


> Mihey_temporary ©   (23.08.04 15:58) [640]
> ... и ссылка на мат. справочник?


Это не в матсправочнике надо искать, а в учебниках по теории построения компиляторов. Например, здесь: http://www.delphikingdom.com/asp/book.asp?BookID=63

А ещё это видно из формальной грамматики Паскаля, ссылку на которую уже приводил Игорь Шевченко: http://www.moorecad.com/standardpascal/pascal.y

Более того, 1+++2 - тоже допустимое в рамках этой грамматики выражение :)) Трактуется как 1+(+(+(2)))

Лично я предлагаю следующие выводы:

1. Общепринятая грамматика - именно такая, независимо от того, нравится это кому-то или нет.

2. Если лично тебе такие выражения не нравятся, то реализовывать калькулятор без них - твоё право. Но только опиши непротиворечивую грамматику, которую будешь реализовывать. Тебе уже сто раз сказали, что без формального описания грамматики никто не знает, что есть фича, а что есть баг, но на тебя это, похоже, не действует.


 
Mihey_temporary ©   (2004-08-23 18:22) [643]

Похоже на вас не действует. Я писал калькулятор с той целью, чтобы он правильно считал математические выражения в том виде, в котором они записываются в реальной, не компьютерной, математической практике, известной любому со времён школы и начальных классов. Никакая грамматика не нужна. Всё. Не прикидывайся, что ты чего-то не понимаешь. Ты прекрасно понимаешь, можно ли писать ++1, можно ли писать .2 или 4.. Не надо прикидываться, всё. Вопрос закрыт окончательно и навеки вечные.


 
Григорьев Антон ©   (2004-08-23 18:48) [644]


> Mihey_temporary ©   (23.08.04 18:22) [643]

Вопрос не закрыт, пока не приведена грамматика в нормальном виде. Ссылки на какие-то общепринятые школьные правила не пройдёт, потому что до тех пор, пока они не формализованы, всегда остаётся место для разночтений. Я, например, в школе не писал "1." и ".5", и мне лично эта запись очень глаз режет. А запись "1++2" мне глаз не режет, хотя я в школе так не писал. И сколько будет людей, столько будет мнений, пока вместо нормальной не допускающей разночтений грамматики мы будем аппелировать к каким-то невнятным школьным правилам, которые всяк волен трактовать по-своему.

Короче, я для себя вывод сделал: ты просто не способен сформулировать грамматику и написать анализатор, который чётко следует ей. И сам это прекрасно понимаешь, вот и пытаешься выкручиваться.


 
nikkie ©   (2004-08-23 19:32) [645]

>Не надо прикидываться, всё. Вопрос закрыт окончательно и навеки вечные.
похоже ты решил в непонятку сыграть. повторюсь.

1. пока нет четких правил, невозможно определить корректное выражение или нет. с моей точки зрения "1." - совершенно нормальное выражение. если твой калькулятор не принимает такое - твое право, но это должно быть четко описано. либо давай правила, либо отвечай на бесконечные вопросы, про каждое конкретное выражение. про "1." ты мне так и не ответил.

2. требования к калькулятору описаны в [603], см. также [613]. он не должен считать некорректные выражения, а должен идентифицировать ошибку пользователя.

3. в настоящий момент были указаны следующие ошибки (в виду описанных требований):

[588]
выражение: 1^^2
результат: Ошибка с кодом 002

выражение: 1^*2
результат: Ошибка с кодом 002

[626]
выражение: 2+1.
результат: 3

выражение: 1.+2
результат: Ошибка со знаками действий или разделителями! Проверьте правильность выражения!

либо одно, либо другое ошибка.

4. если ты желаешь продолжать, то ты должен исправить эти ошибки и выложить исходники. иначе считаем, что ты сдался.

>[629] GrayFace
>6^-2^-1 = "-" is not a valid integer value.
>6^(-2)^(-1) = "-" is not a valid integer value.

это поведение калькулятора Михея с длинной арифметикой. мы согласились, что возведение в степень не работает, поэтому тестируем только версия с обычной арифметикой.


 
Mihey_temporary ©   (2004-08-23 19:49) [646]

>Вопрос не закрыт, пока не приведена грамматика в нормальном виде. Ссылки на какие-то общепринятые школьные правила не пройдёт, потому что до тех пор, пока они не формализованы, всегда остаётся место для разночтений. Я, например, в школе не писал "1." и ".5", и мне лично эта запись очень глаз режет. А запись "1++2" мне глаз не режет, хотя я в школе так не писал. И сколько будет людей, столько будет мнений, пока вместо нормальной не допускающей разночтений грамматики мы будем аппелировать к каким-то невнятным школьным правилам, которые всяк волен трактовать по-своему.

Короче, я для себя вывод сделал: ты просто не способен сформулировать грамматику и написать анализатор, который чётко следует ей. И сам это прекрасно понимаешь, вот и пытаешься выкручиваться.


А может это ты не можешь найти баг и придираешься? Вопрос для меня ЗАКРЫТ. Так будут работать все последующие версии (специально в наказание вам).

2 nikkie:

Сегодня или завтра сдам версию без этих глюков.


 
Рыба ©   (2004-08-23 20:48) [647]

Не понял, кто, кому и что доказывает.


 
VMcL ©   (2004-08-23 22:55) [648]

>>Mihey_temporary ©  (23.08.04 19:49) [646]

ИМХО, критика Антона Григорьева и nikkie конструктивна, и я, например, с ней вполне согласен.

P.S.
Ох, останешься ты вечным `temporary`...


 
GrayFace ©   (2004-08-24 17:09) [649]

nikkie ©   (23.08.04 14:53) [635]

> тут ты неправ. степени вычисляются справа налево, а не
> слева направо, как остальные операции. и твой
> калькулятор считает двойное возведение в степень
> неправильно.

Сомневаюсь. Numlock Calkulator, виндовский инженерный, счетают, что 6^1^2=36. Я и моя спецификация тоже так счетаем.

Неявное умножение уберите сами - это константа на 29 строчке.

> Похоже на вас не действует. Я писал калькулятор с той
> целью, чтобы он правильно считал математические
> выражения в том виде, в котором они записываются в
> реальной, не компьютерной, математической практике,
> известной любому со времён школы и начальных классов.

Это, как раз, сделал я: неявное умножение, функции без скобок...


 
Григорьев Антон ©   (2004-08-24 17:35) [650]


> Mihey_temporary ©   (23.08.04 19:49) [646]
> А может это ты не можешь найти баг и придираешься? Вопрос
> для меня ЗАКРЫТ. Так будут работать все последующие версии
> (специально в наказание вам).


Ой, боюсь, боюсь... :))

Ты одну простую вещь пойми: ты в конечном итоге не мне должен объяснить, какие выражения считать правильными, а компьютеру. А компьютер в школе не учился, для него не существует выражений, правильность или неправильность которых ему очевидна. И всё, что от тебя хотят - чтобы ты в формализованном виде записал то, чему ты собираешься учить компьютер. И если ты не понимаешь, насколько это важно - прими мои соболезнования.


 
Mihey_temporary ©   (2004-08-24 17:40) [651]


> Ты одну простую вещь пойми: ты в конечном итоге не мне должен
> объяснить, какие выражения считать правильными, а компьютеру.
> А компьютер в школе не учился, для него не существует выражений,
> правильность или неправильность которых ему очевидна. И
> всё, что от тебя хотят - чтобы ты в формализованном виде
> записал то, чему ты собираешься учить компьютер. И если
> ты не понимаешь, насколько это важно - прими мои соболезнования.


Дубль три. Вы - домохозяйка. Вам нужен калькулятор в компьютере. Есть такой. Запускаем, пишем 1+(+0.5), жмём кнопку, читаем ответ, закрываем. Что вам ЕЩЁ от меня надо???


 
GrayFace ©   (2004-08-24 18:21) [652]

Григорьев Антон ©   (24.08.04 17:35) [650]
Ты одну простую вещь пойми: ты в конечном итоге не мне должен объяснить, какие выражения считать правильными, а компьютеру. А компьютер в школе не учился, для него не существует выражений, правильность или неправильность которых ему очевидна.

И с какой это стати что-то объяснять компьютеру?? Компьютер - это не собеседник, чтобы ему что-то объяснять. Он написал программу - чем не оьъяснение компу?


 
Mihey_temporary ©   (2004-08-24 21:24) [653]

Заявление: парсер калькулятора не верен в корне. Версию считать нерабочей.


 
Mim1 ©   (2004-08-24 21:44) [654]

Рационизировать и утилизировать. Тащите круглую печать.


 
Думкин ©   (2004-08-25 06:22) [655]

"А он че было, то и полюбила"
"Я сЕжу на берегу
не могу поднять ногУ
не ногУ а нОгу
блин, усе рано не могУ."


 
GrayFace ©   (2004-09-01 18:03) [656]

Не дадим ветке умереть!


 
Mihey_temporary ©   (2004-09-01 18:51) [657]

Никто не сдался. Спор продолжается.


 
VMcL ©   (2004-09-02 10:44) [658]

Не вижу нормально работающего сабджа, особенно, если учесть [653].


 
Igorek ©   (2004-09-02 12:25) [659]

Я в шоке. Да выложите вы сюда исходники. Надеюсь их не много.


 
GrayFace ©   (2004-09-03 16:34) [660]

VMcL ©   (02.09.04 10:44) [658]
Не вижу нормально работающего сабджа, особенно, если учесть [653].

Мой! Мой! И еще раз мой!
(Что мыть - сам не знаю)


 
VMcL ©   (2004-09-03 17:28) [661]

>>GrayFace ©  (03.09.04 16:34) [660]

Как-то лениво мне шесть сотен постов читать... ты эта... выложи ссылку на исходники со спецификацией входных выражений, может на выходные погоняю (на всякий случай: у меня D6).

P.S. Если доберусь до Delphi то "мыть" буду твой кальк по полной программе :o)


 
GrayFace ©   (2004-09-05 08:14) [662]

Ссылка на версию:
> если не работает http://www.grayface.chat.ru/Calk.zip,
> заходите на http://www.grayface.chat.ru, а оттуда берите
> Calk.zip

В нем есть неявное умножение(2pi, 2sin2, например), в связи с которым возникло много споров.
Чтобы отключить неявное умножение, измените константу EmptyMul на 29 строчке.

Спецификация с неявным умножением:
<Empty>       ::=
<Sign>        ::="+"|"-"
<Digit>       ::="0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"
<Operation1>  ::="*"|"/"|Empty
<Operation2>  ::="+"|"-"
<FunctionName>::="sin"|"cos"|"tg"|"ctg"|"arcsin"|"arccos"|"arctg"|"arcctg"
<exponent>    ::="e"|"Е"
<Separator>   ::="."|<DecimalSeparator>
<Number>      ::={Digit}[Separator][{Digit}][<Exponent>[Sign]{Gigit}] | <Separator>{Digit}[<Exponent>[Sign]{Gigit}]
<function>    ::=<FunctionName><operand>
<operand>     ::=[{Sign}]<operand>|<number> | "pi" | <function> | "("<expression>")" | "|"<expression>"|"
<factor>      ::=<operand>[{ "^" <operand>}]
<term>        ::=<factor>[{<Operation1><factor>}]
<expression>  ::=<term>[{<Operation2><term>}]

Без неявного умножения:
<Operation1>  ::="*"|"/"


 
Mihey_temporary ©   (2004-09-05 12:05) [663]

<Number>      ::={Digit}[Separator][{Digit}][<Exponent>[Sign]{Gigit}] | <Separator>{Digit}[<Exponent>[Sign]{Gigit}]

:)


 
GrayFace ©   (2004-09-06 15:35) [664]

:)


 
VMcL ©   (2004-09-06 17:50) [665]

>>GrayFace ©  (05.09.04 08:14) [662]

Теперь уже на следующие выходные, раньше почти наверняка не смогу.


 
Marser ©   (2004-09-12 02:19) [666]


> Nous Mellon ©   (31.07.04 23:15) [398]
>
> > Это показывает твою ничтожную культуру и лишний раз доказывает,
>
> > что твои сообщения на самом деле пусты и необоснованы.
>
> Нет. Это показывает что у тебя на форуме есть только враги.
> В том числе и я.
> А у меня полно друзей.

Сорри за оффтоп. Не сочти за наезд или подколку. Меня ты к друзьям причисляешь?


 
Sergey Kaminski ©   (2004-09-12 03:31) [667]

Ох, а я думал, что ихний калькулятор какой-никакой уже готов давно. А он, оказывается, все пишется и пишется, глюк за глюком устраняется :)

Авторам - зря в свое время не прислушались к Ю.З.

Им же: пора бы уже и признаться, что тот спор давно-о-о проигран. А то флейму уже на целое дьявольское число;)

(Кажется, вначале речь шла о нескольких часах, потом днях... вот до сих пор что-то упорно доказываем) :(


 
Nous Mellon ©   (2004-09-12 08:32) [668]


> Сорри за оффтоп. Не сочти за наезд или подколку. Меня ты
> к друзьям причисляешь?

а как же :)
Ну бывает, конечно, ты иногда отчебучишь чего-нибудь, но мы же знаем что в душе ты хороший :)


 
Mihey_temporary ©   (2004-09-12 13:57) [669]


> Sergey Kaminski ©   (12.09.04 03:31) [667]


Ищите баг в калькуляторе от Grayface.


 
VMcL ©   (2004-09-12 13:57) [670]

>>GrayFace ©  (05.09.04 08:14) [662]

[Unit1.pas: 06.08.2004, 14:50]
Глюков в функциональности не нашел (может плохо искал :)

Но вот как насчет ввести новую функцию? Скажем, понадобилось реализовать новую функцию cos2(x) = cos(x) + 20. После того, как введешь вычисли такие выражения:
cos2
cos2(2)
cos-2+1


 
VMcL ©   (2004-09-12 13:59) [671]

>>Mihey_temporary ©  (12.09.04 13:57) [669]
>VMcL ©  (12.09.04 13:57) [670]

LOL


 
Marser ©   (2004-09-12 15:08) [672]


> Nous Mellon ©   (12.09.04 08:32) [668]
>
> > Сорри за оффтоп. Не сочти за наезд или подколку. Меня
> ты
> > к друзьям причисляешь?
>
> а как же :)
> Ну бывает, конечно, ты иногда отчебучишь чего-нибудь, но
> мы же знаем что в душе ты хороший :)

:-))


 
GrayFace ©   (2004-09-12 18:42) [673]

Sergey Kaminski ©   (12.09.04 3:31) [667]
Ну если бы я тестировал калькулятор не левой задней (чтобы поменьше времени потратить), все бы давно закончилось. Хотя уже 2 недели мой калькулятор ждет тестирования.
VMcL ©   (12.09.04 13:57) [670]
cos2 = Syntax error at offset 4
cos2(2) = 19,5838531634529
cos-2+1 = 0,583853163452858 - а при чем тут это?
По-моему вполне нормально, хоть и неоднозначно. Главное - неразрешимых коллизий нет. cos2 спокойно используется, а если надо взять cos(2), то надо писать скобки.


 
Mihey_temporary ©   (2004-09-12 22:15) [674]


> LOL


А баги то где?


 
VMcL ©   (2004-09-14 19:31) [675]

>>GrayFace ©  (12.09.04 18:42) [673]

>а если надо взять cos(2), то надо писать скобки.

Перечитай свою же спецификацию. Скобки МОЖНО ставить, но НЕОБЯЗАТЕЛЬНО. Вот так вот.

>cos2(2) = 19,5838531634529

Понимаешь ли, спецификация калькулятора должна включать в себя таблицу приоритетов операций. У тебя её нет. Вот мне теперь интересно, как калькулятор в вышеприведенном случае "угадает", что я, как пользователь, захотел вычислить: функцию cos2 от аргумента "2" или удвоенный  косинус от аргумента "2"?


 
VMcL ©   (2004-09-14 19:32) [676]

P.S.</>

>По-моему вполне нормально, хоть и неоднозначно.

А должно быть "адназначна" © сам знаешь


 
VMcL ©   (2004-09-24 09:53) [677]

>>GrayFace ©

Ку?


 
GrayFace ©   (2004-09-27 16:29) [678]

Ку.


 
Kerk ©   (2004-10-03 16:02) [679]

Была лаба на сабжевую тему. Наваял кое-что. Зацените. :)
http://kerk.mail2k.ru/postfix.zip


 
VMcL ©   (2004-10-03 20:04) [680]

>>Kerk ©  (03.10.04 16:02) [679]

Та ну тебя. Задолбали эти куркуляторы. Давайте лучше компиляторы писАть...



Страницы: 1 2 3 4 5 6 7 8 9 
10 11 12 13 14 15 16 17 18 
19 вся ветка

Текущий архив: 2004.11.07;
Скачать: CL | DM;

Наверх




Память: 1.61 MB
Время: 0.227 c
1-1098129272
Riant
2004-10-18 23:54
2004.11.07
Сохранение страниц в TWebBrowser


1-1098332732
Kniaz
2004-10-21 08:25
2004.11.07
Совместный доступ к файлу


1-1098655862
saNat
2004-10-25 02:11
2004.11.07
Глюки TMemo


10-1059006618
MMax
2003-07-24 04:30
2004.11.07
Утечка памяти COM сервера реализованного на Delphi 4-7.


14-1097772051
Rouse_
2004-10-14 20:40
2004.11.07
Нет, ну я балдю с подрастающего поколения...