Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 1.6 MB
Время: 0.291 c
6-1093713135
RoLeX2004
2004-08-28 21:12
2004.11.07
Ошибка при отправке e-mail!


14-1097743259
Игорь Шевченко
2004-10-14 12:40
2004.11.07
Существует ли программа, показывающая сетевые соединения


14-1098216763
Kolan
2004-10-20 00:12
2004.11.07
MediaPlaer


1-1098715274
aap
2004-10-25 18:41
2004.11.07
Доработать PageControl


14-1097909032
ivan1
2004-10-16 10:43
2004.11.07
защита программы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский