Форум: "Потрепаться";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];
ВнизКалькулятор Найти похожие ветки
← →
Alx2 © (2004-07-27 09:13) [160]>Юрий Зотов © (27.07.04 09:07)
Согласен. Просто для меня естественна последовательность унарных операций. И я не согласился, что она вдруг оказалась бредовой.
А с -+-5 - глюк, конечно :)
← →
Рамиль © (2004-07-27 09:15) [161]
> Конечно, я знаю, что такой двигатель Вы тут же назовете
> даровым и тут же скажете, что их то Вы как раз не отвергаете.
> Но ведь на лицо просто явная подмена понятий - реальную
> работающую конструкцию назовем даровым, а бредовую не работающую
> вечным двигателем
Отвечу за Думкина:) Нет никакой подмены понятий, "даровый" двигатель он и есть даровый. Классический вечный двигатель не должен черпать энергию из вне, будь то хоть природные явления или пресловутый эфир, которого не существует. А на основе гравитации ни вечного, ни дарового двигателя не получится, как и на основе постоянного магнитного поля. На земле доступно только три первичных источника энергии - солнце, тепло недр земли и синтез/распад (может еще что то есть, конечно, поправьте, если ошибаюсь).
← →
Sandman25 © (2004-07-27 09:20) [162]Еще есть приливные станции, задействующие как раз гравитацию :)
← →
Думкин © (2004-07-27 09:22) [163]> [162] Sandman25 © (27.07.04 09:20)
Но вечного там тоже нет. :) Тормозимся однако.
← →
Alx2 © (2004-07-27 09:23) [164]Мой вариант разбора выражений лежит на spannew.narod.ru/trigon-sources.zip
Но это не совсем калькулятор. Вернее, совсем не калькулятор.
Это заготовка для преобразования выражений.
Код от 98-го года писанный "для внутреннего использования". Так что заранее сорри.
← →
Рамиль © (2004-07-27 09:24) [165]
> [162] Sandman25 © (27.07.04 09:20)
Ну вот, пропустил:) Вообщето это не чисто гравитация - на приливы расходуется кинетическая энергия связки Земля - Луна.
← →
Sandman25 © (2004-07-27 09:25) [166][163] Думкин © (27.07.04 09:22)
Естественно. Интересно, какое событие наступит раньше: Луна упадет на Землю или Земля упадет на Солнце?
← →
Sandman25 © (2004-07-27 09:28) [167][165] Рамиль © (27.07.04 09:24)
Конечно. Если не две материальные точки, а обычные тела, с протяженностью, вращаются вокруг друг друга, то происходит потеря из-за трения.
← →
Думкин © (2004-07-27 09:29) [168]> [166] Sandman25 © (27.07.04 09:25)
Или сутки станут вечными? :)
> [164] Alx2 © (27.07.04 09:23)
Удачи!
> Рамиль ©
Все верно. Спасибо. :)
← →
calm © (2004-07-27 09:38) [169]
> Мой вариант разбора
Ох.. мне тоже уже хочется написать свой калькулятор...
← →
NeyroSpace © (2004-07-27 09:52) [170]>Ох.. мне тоже уже хочется написать свой калькулятор...
Синдром Николая Быкова? :-)
← →
Anatoly Podgoretsky © (2004-07-27 09:53) [171]Ну его мы до сих пор ждем
← →
GrayFace (2004-07-27 09:57) [172]ЮЗ, докажите свое высказывание - найдите в моем алгоритме ошибку, которую невозможно будет исправить.
>При таком подходе Юрий может спать спокойно. Ибо вместо простого парсинга по 7 знакам
>Вы выбрали головную боль с произвольной трактовкой выражения. Это путь в лежачую восьмерку,
>даже без всяких переменных. Незнание теории не освобождает от необходимости ее придумать. :))
Трактовка вполне четкая, просто есть правила трактовки, которые, может быть, стоит изменить (Может быть лучше 2^2pi лучше интерпритировать, как 2^(2pi)). Головной боли в "sin2" вообще нету, а в "2pi" - мало. Основная головная боль - преоритет умножения без знака. По-моем будет логично его повысить, но с другой стороны, это же все-таки умножение...
>NeyroSpace © (26.07.04 14:14) [70]
Из мухи слона делаете. Строительство дерева - это тоже самое, что вычисление, вот только зачем оно калькулятору?
> 1,2/(1,2222-1,22221)
Результат моего калькулятора:-120000,000000001. А вот как сделать более точный подсчет, я не представляю. :(
Юрий Зотов [138]
>2. Тем, что программу можно написать и без компонентов, а вот калькулятор без теории написать НЕЛЬЗЯ.
Наоборот. Программа без компонент - БОЛЬШОЙ геморрой, а калькулятор без теории - 6 часов (если найдетеи еще ошибки - будет больше:)).
Anatoly Podgoretsky © (26.07.04 20:16) [146]
>Не надоело спорить?
>Первый обещал за 2 часа и где он
Я такого не обещал. Я здесь. Новая версия уже давно лежит [45,46], об ошибках никто не докладывает.
Юрий Зотов © (27.07.04 06:08) [153]
> Огромное Кулясищще
>Посмотрел код, стиль. Так вот, мистер спорщик, скажу прямо - не следовало бы Вам спорить. Рано еще.
А вот в этом я с вами полностью согласен.
← →
NeyroSpace © (2004-07-27 09:59) [173]>Из мухи слона делаете. Строительство дерева - это тоже самое, что вычисление, вот только зачем оно калькулятору?
Да это я так, просто послышалось, что-то о самообучении :-)
← →
calm © (2004-07-27 10:00) [174]Синдром Николая Быкова? :-)
Да нет..
Просто топик начал один калькуляторопИсатэл, а сейчас уже чуть ли не десяток :)
← →
Юрий Зотов © (2004-07-27 10:18) [175]> GrayFace (27.07.04 09:57) [172]
> ЮЗ, докажите свое высказывание - найдите в моем алгоритме
> ошибку, которую невозможно будет исправить.
ОК, но на анализ алгоритма потребуется время. Скорее всего, раньше выходных я просто не смогу этим заняться, а вот в выходные постараюсь. Будем считать это как бы пятничной головоломкой. :о)
> Программа без компонент - БОЛЬШОЙ геморрой, а калькулятор без
> теории - 6 часов (если найдетеи еще ошибки - будет больше:)).
Большой геморрой, или малый - неважно. Важно то, что программа без компонентов нормально пишется и нормально работает. А вот калькулятор без теории НИКОГДА нормально работать не будет. И пока что это только подтверждается.
> Новая версия уже давно лежит [45,46], об ошибках никто не
> докладывает.
См. [155]. Если уж калькулятор допускает последовательность унарных операций, то он должен допускать ее ВСЕГДА, а не в отдельных случаях.
← →
Игорь Шевченко © (2004-07-27 10:23) [176]Еще момент: При вычислении выражения 1/((1.2-1.21) результатом является Access Violation
← →
Cobalt © (2004-07-27 10:31) [177]2 GrayFace
Будьте добры, поясните - что означает ошибка "Два действия подряд! [02А]"???
Какие именно действия нельзя делать подряд?
Такое вот почему-то прокатывает - 1/3sin(1)
а такое - 1/sin(1) - нет
Что за дискриминация?
Какие у тебя правила вычисления?
1/3sin(3,1415926)
результат - 0,333333333333333}{0,0523359562429438
Почему у тебя результат - не число, а строка? что это ещё за варианты???
← →
VMcL © (2004-07-27 10:32) [178]>>Всем калькуляторописатялям
Может, прежде, чем выкладывать написанный код, выложите спецификацию выражений? А то бред какой-то получается: нашли дыру, залатали дыру, нашли, залатали, ...
Должно быть чёткое определение синтаксически корректных выражений и правил их вычисления - приоритет операций и т. п.
← →
mrcat © (2004-07-27 10:33) [179]>нашли дыру, залатали дыру, нашли, залатали, ...
нашли, залатали, попутно ещё пару-тройку создали ...
← →
Anatoly Podgoretsky © (2004-07-27 10:46) [180]VMcL © (27.07.04 10:32) [178]
Так это вообще не зубам, код рубить надо.
← →
Григорьев Антон © (2004-07-27 10:49) [181]
> VMcL © (27.07.04 10:32) [178]
> >>Всем калькуляторописатялям
>
> Может, прежде, чем выкладывать написанный код, выложите
> спецификацию выражений? А то бред какой-то получается: нашли
> дыру, залатали дыру, нашли, залатали, ...
>
> Должно быть чёткое определение синтаксически корректных
> выражений и правил их вычисления - приоритет операций и
> т. п.
Да я им об этом ещё вчера писал. А Юрий Зотов даже привёл пример такой спецификации. Только это всё - мёртвому припарки. Осознание необходимости такой спецификации - это осознание необходимости теории. А это и есть суть спора.
← →
Murkt © (2004-07-27 12:39) [182]Юрий Зотов © (27.07.04 05:35) [152]
Блин, ну хоть прочитать, то что я написал, можно было? А я написал, что у меня Делфи нет, и проверить даже на синтаксические (в коде) ошибки - не могу. Честно предупредил! Я даже удивлен, что оно скомпилировалось :)
А так - экспериментируйте с exe-шником, или с ".new." (хотя тут тоже никакой гарантии работы, но добавлены только арк-функции, потому по идее должны работать. Если я правильно написал названия делфевских.), а не new2.
Да, в екзешнике вроде бы и тангенс и котангенс вычисляются как тангенс - ошибка в коде. Но к алгоритму никакого отношения :)
← →
Esu © (2004-07-27 12:59) [183]sin(3,1415926)+++1
Syntax error at offset 16
← →
calm © (2004-07-27 13:17) [184]Блин, ну хоть прочитать, то что я написал, можно было? А я написал, что у меня Делфи нет, и проверить даже на синтаксические (в коде) ошибки - не могу.
Murkt, а зачем ты вообще свое твоерение показываешь?
← →
Murkt © (2004-07-27 13:26) [185]calm © (27.07.04 13:17) [184]
exe-шник - рабочий, скомпиленый год назад.
А почему оно показывает пустую строку - я понял. Вместе с комментированием проверки я закомментировали write :)
Сделал вроде бы нормальный, должно сейчас работать (перезалил).
Еще раз повторю адреса, чтоб не лазить далеко
http://murkt.eth0.org.ua/calculator.exe - неправильно работает тангенс.
http://murkt.eth0.org.ua/calculator.new.dpr - добавлены arc-функции.
http://murkt.eth0.org.ua/calculator.new2.dpr - убрана проверка выражения. возможно работает, скорее всего работает с нецелыми числами.
← →
False_Delirium © (2004-07-27 13:30) [186]Огромное Кулясищще © (26.07.04 19:02) [134]
Разница в знании устройства механизма.
Написании калькулятора необходимо начинать со знания математики.
← →
Григорьев Антон © (2004-07-27 15:31) [187]Кстати, о пользе теории. Компилятор для первых версий Фортрана написать сложнее, чем для первых версий Паскаля. Хотя, казалось бы, всё должно быть наоборот: Паскаль появился позднее, когда компьютеры стали мощнее, появилась возможность создавать более сложные компиляторы. А всё дело в том, что к моменту разработки Паскаля уже была придумана теория синтаксического разбора и стало понятно, как нужно строить синтаксис языка, чтобы он был непротиворечивым и подлежал разбору конечным автоматом. Вот компилятор и упростился.
> calm © (27.07.04 13:17) [184]
> Блин, ну хоть прочитать, то что я написал, можно было? А
> я написал, что у меня Делфи нет, и проверить даже на синтаксические
> (в коде) ошибки - не могу.
>
> Murkt, а зачем ты вообще свое твоерение показываешь?
Меня, кстати, тоже интересует этот вопрос. GrayFace и Кулясищще пытаются доказать, что теория для написания калькулятора не нужна. А что хотите доказать вы?
← →
Юрий Зотов © (2004-07-27 15:40) [188]> GrayFace (27.07.04 09:57) [172]
Значит, так - калькулятор глючит по-страшному. Вероятно, в основном из-за того, что его входной язык представляет собой загадку, ответ на которую неизвестен даже разработчику. То есть: мы писали некий алгоритм, и уж что получилось - то и получилось. А если теперь кто скажет, что это глюки, то мы ответим, что это не глюки, а такие вот фичи входного языка. Например:
Выражение: 2e + 5e (именно так - с пробелами)
Результат: 7 (!!!)
Выражение: --23e--1
Результат: 24
И подобных примеров можно привести множество (часть из них уже приводили и другие). Сорри, но давайте говорить честно - никакие это не запланированные фичи, а законмерные результаты того, что алгоритм писался наобум, а отлаживался методом последовательной вставки подпорок.
Поэтому: еще раз сорри, но я не стану тратить свое время на сколько-нибудь серьезный анализ недостатков алгоритма, который и без того на каждом шагу страдает белой горячкой. В этом нет никакой необходимости.
Если Вы действительно хотите, чтобы я занялся анализом всерьез, то для начала САМИ отнеситесь к своей программе СЕРЬЕЗНО и доведите ее до ПОЛНОГО ума. Чтобы это был действительно НОРМАЛЬНЫЙ калькулятор с НОРМАЛЬНЫМ входным языком. А не жалкая игрушечная поделка из детсадовского кружка "Умелые ручки".
И посмотрим, как это получится у Вас без теории.
← →
GrayFace (2004-07-27 16:02) [189]Юрий Зотов © (27.07.04 10:18) [175]
>См. [155]. Если уж калькулятор допускает последовательность унарных операций, то он должен допускать ее ВСЕГДА, а не в отдельных случаях.
Я не понял, о чем Вы. Унарные операции - это +,-,*,/ ?
Может быть, Вы говорите о sin(3,1415926)+++1? Я считаю эту запись неверной, также, как и sin(2)+----+1, но только это - особенность обработки. Мне не стоило ее указывать в списке допустимого.
Cobalt © (27.07.04 10:31) [177]
>2 GrayFace
>Будьте добры, поясните - что означает ошибка "Два действия подряд! [02А]"???
Она означает, что вы смотрите калькулятор Огромного Кулясищщя. А мой калькулятор - в постах [45] и [46].
Григорьев Антон © (27.07.04 10:49) [181]
>Да я им об этом ещё вчера писал. А Юрий Зотов даже привёл пример такой спецификации.
>Осознание необходимости такой спецификации - это осознание необходимости теории.
Ничего подобного. Спецификация очень важна, т.к. слишком много народу ее от меня требует. :) А в теории настолько большой нужды нет. Хоть в моем калькуляторе и было (и, может быть, будет) много глюков, но он универсальнее калькулятора, написанного по теории. Чтобы добавить в калькулятор, сделаный по теории, новую операцию с новым преоритетом, нужно модифицировать алгоритм (в той теории, котроую мне рассказал отец, после того, как я сделал этот калькулятор), а у меня надо только добавить новый элемент в массив. По затратам времени мой путь и путь по теории (изучение + кодинг) примерно равны.
Я не знаю, как описать по спецификации некоторые вещи, так что опишу словами.
<function>::=После имени идут либо скобки, либо число, либо функция, либо константа.
Преоритеты:
1) "^"
2) "*", "/", отсутствие операции(расценивается, как умножение).
3) "+", "-"
← →
Юрий Зотов © (2004-07-27 16:11) [190]> GrayFace (27.07.04 16:02) [189]
Это не спецификация. В спецификации должны быть четко определены ВСЕ понятия языка, а у Вас нет даже определения числа. Вот, скажем, 5E - это число, или синтаксическая ошибка?
← →
Игорь Шевченко © (2004-07-27 16:22) [191]GrayFace (27.07.04 16:02) [189]
> А в теории настолько большой нужды нет. Хоть в моем калькуляторе
> и было (и, может быть, будет) много глюков, но он универсальнее
> калькулятора, написанного по теории.
LOL !!!!!
Я конечно понимаю, что лавры Ивана Кулибина спать не дают, но не настолько же...
← →
VMcL © (2004-07-27 16:24) [192]>>GrayFace (27.07.04 16:02) [189]
Приоритет(ы), ё-моё.
← →
Григорьев Антон © (2004-07-27 16:29) [193]
> GrayFace (27.07.04 16:02) [189]
> Я не понял, о чем Вы. Унарные операции - это +,-,*,/ ?
Блин! Ну терминологию-то той предметной области, в которой вы пытаетесь программировать, знать надо! Унарные операции - это операции, производимые над одним операндом. Юрий имел ввиду унарный минус (изменение знака выражения) и унарный плюс (по сути, пустая операция, но допустимая синтаксически для симметрии с унарным минусом).
Кстати, судя по всему, вы даже не понимаете разницы между унарным и бинарным минусом. А берётесь писать калькулятор. Это всё равно что я, не знающий разницу между дебетом и кредитом, взялся бы писать бухгалтерскую программу.
> Может быть, Вы говорите о sin(3,1415926)+++1? Я считаю эту
> запись неверной, также, как и sin(2)+----+1, но только это
> - особенность обработки. Мне не стоило ее указывать в списке
> допустимого.
Надо сначала привести этот самый список допустимого, о чём вам уже говорили. То, что написано в [45], таким описанием не является, потому что там не написано, что, например, 2+2 является допустимым выражением. Надо либо привести весь список допустимых выражений (а он, как вы понимаете, бесконечен), либо привести правила, по которым мы однозначно можем сказать про любое выражение, допустимо ли оно.
А если несколько унарных операций подряд у вас являются недопустимыми, то почему вычисляется выражение ---5? (см. [155]). Тут уж либо такая последовательность допустима, либо нет, а избирательное применение закона ни к чему хорошему не приводит.
> <function>::=После имени идут либо скобки, либо число, либо
> функция, либо константа.
> Преоритеты:
> 1) "^"
> 2) "*", "/", отсутствие операции(расценивается, как умножение).
> 3) "+", "-"
Это не спецификация. Это [вырезано цензурой. А то модераторы удалят]. Знак "::=" должен описывать не то, что идёт после функции, а то, как синтаксически распознать функцию. Например, 2*(3+4) - это функция? После "2*" идут скобки, а в "спецификации" нигде не написано, что "2*" не может быть именем функции. Выражение "2+(-2)" допустимо? А выражение "2*(/2)"? Ваша "спецификация" не даёт возможности ответить на эти вопросы. Попытайтесь хотя бы понять ту спецификацию, которую Юрий написал в [83], чтобы понять, чем она отличается от того позорища, которое вы привели.
> Ничего подобного. Спецификация очень важна, т.к. слишком
> много народу ее от меня требует. :) А в теории настолько
> большой нужды нет. Хоть в моем калькуляторе и было (и, может
> быть, будет) много глюков, но он универсальнее калькулятора,
> написанного по теории. Чтобы добавить в калькулятор, сделаный
> по теории, новую операцию с новым преоритетом, нужно модифицировать
> алгоритм (в той теории, котроую мне рассказал отец, после
> того, как я сделал этот калькулятор), а у меня надо только
> добавить новый элемент в массив. По затратам времени мой
> путь и путь по теории (изучение + кодинг) примерно равны.
> Я не знаю, как описать по спецификации некоторые вещи, так
> что опишу словами.
Мне объяснили алгоритм калькулятора в школе. 45 минут на объяснение, следующие 45 - на кодирование. И всё работает. А у вас пока глючит не по-детски, да ещё и вы, автор, не можете толком сказать, какие выражения калькулятор поймёт, а какие - нет. И это - после примерно 7 (если не ошибаюсь) часов работы.
← →
calm © (2004-07-27 16:30) [194]
> Хоть в моем калькуляторе и было (и, может быть, будет) много
> глюков, но он универсальнее калькулятора, написанного по
> теории
Это как это? поясните пожалуйста. Мне отчего-то кажется, что с точностью до наоборот.
> Чтобы добавить в калькулятор, сделаный по теории, новую
> операцию с новым преоритетом, нужно модифицировать алгоритм
>
Ой ли?
> в той теории, котроую мне рассказал отец
Ваш отец тоже писал подобные калькуляторы? :-)
P.S. не сочтите за переход на личности, не в обиду..
← →
calm © (2004-07-27 16:33) [195]> Хоть в моем калькуляторе и было (и, может быть, будет) много
> глюков, но он универсальнее калькулятора, написанного по
> теории
> Чтобы добавить в калькулятор, сделаный по теории, новую
> операцию с новым преоритетом, нужно модифицировать алгоритм
>
Кстати, а как вы можете утверждать подобное, не владея теорией?
← →
pasha_golub © (2004-07-27 16:36) [196]Оффтоп: только что еще раз поглядел на описание грамматики Объектного Паскаля. Насколько же красиво!!! Да, определенно в математике (не будем придираться к слову :0) ) есть своя красота, особая. Даже слов нету.
← →
Григорьев Антон © (2004-07-27 16:40) [197]
> pasha_golub © (27.07.04 16:36) [196]
> Оффтоп: только что еще раз поглядел на описание грамматики
> Объектного Паскаля. Насколько же красиво!!! Да, определенно
> в математике (не будем придираться к слову :0) ) есть своя
> красота, особая. Даже слов нету.
И это при том, что грамматика Паскаля, в отличие, например, от грамматики Оберона, не полностью поддаётся формальному описанию :))
← →
pasha_golub © (2004-07-27 16:42) [198]Григорьев Антон © (27.07.04 16:40) [197]
Ы-ы-ы, можно носом ткнуть?
← →
Юрий Зотов © (2004-07-27 16:49) [199]> GrayFace
Хорошо, давайте сделаем так. Вполне понятно, что если человек не изучал теорию языков, то самому написать спецификацию языка для него будет затруднительно. Поэтому предлагаю помощь - я приведу пример такой спецификации, а Вы посмотрите, как это делается и либо примете ее, либо напишете свою. Но после того, как какая-то спецификация языка будет Вами принята, калькулятор обязан СТРОГО ей соответствовать и любое отклонение рассматривается, как глюк. Иначе калькулятором будет просто невозможно пользоваться - он окажется непредсказуем.
Годится?
← →
DiamondShark © (2004-07-27 16:51) [200]
> И это при том, что грамматика Паскаля, в отличие, например,
> от грамматики Оберона, не полностью поддаётся формальному
> описанию :))
С этого места подробнее.
Страницы: 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];
Память: 0.85 MB
Время: 0.137 c