Форум: "Потрепаться";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];
ВнизКалькулятор Найти похожие ветки
← →
Igorek © (2004-07-26 18:31) [120]С теорией и дурак напишет - ты попробуй без теории...
← →
Игорь Шевченко © (2004-07-26 18:32) [121]Огромное Кулясищще © (26.07.04 18:29) [119]
> >Похоже, что это глюк не арифметики, а парсера.
>
> Вряд ли.
Для проверки запускаем калькулятор Windows и видим результат:
1,2/(1,2222-1,22221) = -0,00001
Never attribute to malice...
← →
Игорь Шевченко © (2004-07-26 18:33) [122]Igorek © (26.07.04 18:31) [120]
> С теорией и дурак напишет
Если не трудно, нельзя ли проиллюстрировать эту фразу ? :)
← →
Огромное Кулясищще © (2004-07-26 18:36) [123]2 Игорь Шевченко:
Парсер - не алгоритм. Алгоритм там правильный - это я вам отвечаю.
← →
Igorek © (2004-07-26 18:38) [124]
> Игорь Шевченко © (26.07.04 18:33) [122]
> > С теорией и дурак напишет
> Если не трудно, нельзя ли проиллюстрировать эту фразу ?
> :)
Трудно. Надо дурака найти. :-)
← →
Юрий Зотов © (2004-07-26 18:41) [125]> Igorek © (26.07.04 18:31) [120]
> С теорией и дурак напишет - ты попробуй без теории...
А умный без теории и писать не станет.
Что-то вспоминается мне постинг Думкин"а о стремлении некоторых людей писать против любого ветра. Неважно, какого - лишь бы писать.
А еше о том, что истинная оригинальность (а не оригинальничание) требует глубоких знаний и серьезный работы.
← →
Огромное Кулясищще © (2004-07-26 18:42) [126]2 Игорь Шевченко © (26.07.04 18:32) [121]:
Ну так естессно, если Delphi какую-то фигню выдаёт. Что за буква "E" в числе? Это великий компилятор?
← →
Юрий Зотов © (2004-07-26 18:48) [127]> Огромное Кулясищще © (26.07.04 18:42) [126]
Вот только что нажал в Delphi Сtrl+F7 и вычислил:
1.2/(1.2222-1.22221)
Результат: -120000 и никаких проблем.
← →
Ihor Osov'yak © (2004-07-26 18:50) [128]> Что за буква "E" в числе?
хм, имхо, это даже не "оригинальничание". Это либо отсутствие элементарных знаний, либо.. Я лучше промолчу, останусь политкорректным :-)
← →
Юрий Зотов © (2004-07-26 18:52) [129]> Огромное Кулясищще © (26.07.04 18:42) [126]
> Ну так естессно, если Delphi какую-то фигню выдаёт. Что за
> буква "E" в числе? Это великий компилятор?
"И этот человек запрещает мне ковыряться в носу"???
И этот человек берется писать калькуляторы?
:о)))))))))))))))))))))))))
← →
Огромное Кулясищще © (2004-07-26 18:53) [130]2 Юрий Зотов
>Для проверки запускаем калькулятор Windows и видим результат:
1,2/(1,2222-1,22221) = -0,00001
>Вот только что нажал в Delphi Сtrl+F7 и вычислил:
1.2/(1.2222-1.22221)
Результат: -120000 и никаких проблем.
:)))))
← →
Юрий Зотов © (2004-07-26 18:58) [131]> Огромное Кулясищще © (26.07.04 18:53) [130]
Если вспомнить, что калькулятор Windows - НЕстрочный, а в Delphi - строчный, то очень нетрудно сообразить, что калькулятором Игорь вычислял только знаменатель (в котором вся суть и есть), а при постинге скопировал мыщкой все выражение.
← →
False_Delirium © (2004-07-26 18:59) [132]Формулировка задачи плавно перетекает в "А слабо написать теорию конечных автоматов?".
Интересно, что победит ... жажда оправдать свою несостоятельность, потугами написать калькулятор или здравый смысл, как ещё одна ступень в саморазвитии?
← →
Огромное Кулясищще © (2004-07-26 19:01) [133]2 Юрий Зотов:
И всё же тем не менее. Ок, не учёл возможное представление числа. Допустим, починю. Вы скажете, что найдёте ещё ошибок. Найдёте. Опять починю. Вы опять скажете. И найдёте?
← →
Огромное Кулясищще © (2004-07-26 19:02) [134]2 False_Delirium © (26.07.04 18:59) [132]:
Че мотличает написать калькулятор по готовой теории, где вместо слова равно надо поставить := или же взять готовый компонент?
← →
VMcL © (2004-07-26 19:02) [135]>>Огромное Кулясищще © (26.07.04 18:42) [126]
>Что за буква "E" в числе?
Мдя. Даже не смешно, честное слово. И ты после этого хочешь написать строчный калькулятор? Серьёзно?
← →
Ihor Osov'yak © (2004-07-26 19:04) [136]2 [133] Огромное Кулясищще © (26.07.04 19:01)
см [6] Anatoly Podgoretsky © (24.07.04 19:51)
← →
Esu © (2004-07-26 19:22) [137]Сколоко уже времени ушло на разработку ? :)
Если алгоритм не очевиден то нужно его сначала придумать/вспомнить/где-то взять. Предполагаю что возможно где-то и найдется человек который "на лету" его может придумать и закодировать.
← →
Юрий Зотов © (2004-07-26 19:36) [138]> Огромное Кулясищще © (26.07.04 19:01) [133]
> Ок, не учёл возможное представление числа. Допустим, починю.
> Вы скажете, что найдёте ещё ошибок. Найдёте. Опять починю. Вы
> опять скажете. И найдёте?
Чтобы не повторяться, процитирую свой ответ [290] из исходной ветки. Точнее, P.S. и P.P.S. из этого ответа. И обратите самое серьезное внимание на выделенное жирным шрифтом.
P.S.
"До тех пор, пока не будет привлечена теория, ВСЕГДА найдется выражение, которое такой компилятор распознать и выполнить НЕ сможет".
(С) Юрий Зотов
P.P.S.
Пока что, как видите, мне удается найти такое выражение без малейших проблем. И это при том, что пока еще я совершенно не вникал в Ваш алгоритм и набираю выражения просто "с потолка". Естественно, по мере доработки программы это будет делать все сложнее и дольше - и вот тогда я проанализирую код, найду в нем слабое место и уже безо всякого подбора СРАЗУ напишу выражение, на котором программа все равно споткнется. И сколько бы Вы ее ни дорабатывали, так будет ВСЕГДА. Потому что - см. P.S. выше.
> Огромное Кулясищще © (26.07.04 19:02) [134]
> Че мотличает написать калькулятор по готовой теории, где
> вместо слова равно надо поставить := или же взять готовый
> компонент?
1. Не стоит думать, что задача сводится к подстановке оператонра присвоения вместо слова "равно". Не знаете - не говорите.
2. Тем, что программу можно написать и без компонентов, а вот калькулятор без теории написать НЕЛЬЗЯ.
3. Напишите по теории - узнаете, что даже и с ее использованием это будет НАМНОГО сложнее, чем компоненты по форме гонять.
← →
Огромное Кулясищще © (2004-07-26 19:48) [139]>так будет ВСЕГДА.
Спорим?
← →
Юрий Зотов © (2004-07-26 19:55) [140]> Огромное Кулясищще © (26.07.04 19:48) [139]
Судя по приведенным выше результатам тестирования, Вы пока еще не написали вообще никакого калькулятора. Потому что то, что Вы написали - это не калькулятор, а генератор ошибок.
Поэтому для начала напишите хоть какой-нибудь калькулятор, мистер спорщик.
← →
Anatoly Podgoretsky © (2004-07-26 19:55) [141]Юрий Зотов © (26.07.04 18:48) [127]
Тот же рещультат в Виндоус, инженерный калькулятор
← →
Esu © (2004-07-26 19:55) [142]А почему 2^-3 нельзя писать ?
← →
Anatoly Podgoretsky © (2004-07-26 19:58) [143]Даже при копировании 1,2/(1,2222-1,22221) пришлось заменить на запятые, Игорь просто не нажал конечный Enter
← →
Esu © (2004-07-26 20:12) [144]Ну не знаю как там с зубодробильными примерами но в последней версии он мне такое сказал:
8/(9+(1)+(-1))+1+1+1
-0,2}+{1}+{1}+{1
Глючит даже на таком:
(1)+(1)+(1)
2}+{1
Тоесть со скобками дело совсем плохо :(
← →
Esu © (2004-07-26 20:14) [145]Извиняюсь, скобки похоже не виноваты. Не работает + :(
3+1+2
4}+{2
← →
Anatoly Podgoretsky © (2004-07-26 20:16) [146]Не надоело спорить?
Первый обещал за 2 часа и где он
← →
Alx2 © (2004-07-26 21:51) [147]Нда... Однако задница. Хотел было послать на суд общественности свою наработку шестилетней давности, как вдруг, страхуясь (слово-то какое) обнаружил разницу в поведении программы после компиляции с отключенной оптимизацией супротив включенной. Самое странное, что я ожидал одинаковую работу программы в этих случаях. Но нет: без оптимизации словил классику - AV.
Причины очевидны. Где-то "руки не помыл" :) А немытье рук заключилось в том, что использовал фиксированные смещения для адресации в коде во вставках на asm (дооптимизировался, однако). И приехал к платформенно-зависимой программе. Не учел, что код настолько меняется в этих двух режимах (оптимизированный и as is). Короче говоря, урок на будущее получил на примере своего-же старого кода. Слава богам, что D3 от D6 не сильно уехал по способу оптимизации. Иначе мне светила бы разборка в стиле "чего это я хотел", глядя на собственноручно сотворенную хирургию с использованием перочинного ножа...
Ошибки молодости, мать их... Сейчас так не пишу. Но прошлое аукается. И на сей раз за это "ау" спасибо Ю.З. за предложение написать калькулятор :) И все-таки, после некоторой правки, готов выложить "на суд общественности свою наработку шестилетней давности". Правда, там написано, в основном, по-теории. Но не все. Так как не только синтаксический разбор идет.
← →
Cobalt © (2004-07-26 23:28) [148]1/sin(1,1222-1,22221)
Очекнь странное сообщение выдал - "Два действия подряд! [02А]"
Ничего не понимаю...
P.S. а виндовый калькулятор слопал, выдал -0,10001
← →
Cobalt © (2004-07-26 23:38) [149]Мда, действительно, виндовый калькулятор не так работает, как я предполагал :)
Вот правильный результат:
1/sin(1,1222-1,22221)=
1/sin(-0,10001)=
1/-0,0017455028985576529057483101606271=
-572,90079599771607277294464413762
← →
Murkt © (2004-07-26 23:42) [150]Я когда-то (с год назад) писал калькулятор. День писал, день обезбаживал. Вроде все подлые выражения вычисляет, но...
Он не умеет вычислять с нецелыми числами. Подозреваю, что для этого надо просто выкинуть проверку на правильность кода :)
Написано БЕЗ знания теории. И я на 98% уверен, что ЮЗ довольно быстро найдет невычисляемую строку :)
кстати, 2^-2=0.25. я все думал, сколько же это будет :)
← →
Murkt © (2004-07-26 23:51) [151]http://murkt.eth0.org.ua/calculator.exe - 46 кб.
http://murkt.eth0.org.ua/calculator.new.dpr - это немного измененный, он умеет (по идее) arc-функции. 7кб.
http://murkt.eth0.org.ua/calculator.new2.dpr - по идее может вычислять с нецелыми числами (закомментирована проверка). 7кб.
Делфи у меня нет в данный момент, потому проверить даже на синтаксические ошибки - не могу. Извиняйте.
← →
Юрий Зотов © (2004-07-27 05:35) [152]> Murkt © (26.07.04 23:51) [151]
> Написано БЕЗ знания теории. И я на 98% уверен, что ЮЗ довольно
> быстро найдет невычисляемую строку :)
Скачал последний вариант (который работает с нецелыми числами). Невычисляемую строку даже и не искал - ею оказалась самая первая.
Выражение: 2+5/3
Результат: пустая строка
Скажите - Вам не совестно выкладывать ТАКИЕ программы? Вы САМИ ее вообще-то тестировали?
← →
Юрий Зотов © (2004-07-27 06:08) [153]> Огромное Кулясищще
Из дома Ваше нерукотворное произведение скачалось. Результаты, как и следовало ожидать, плачевные:
выражение: 6*((2+5)/3+7)
результат: 54}.{33333333333333
Собственно, это не новость, меня куда больше интересовала зрелость программиста. Посмотрел код, стиль. Так вот, мистер спорщик, скажу прямо - не следовало бы Вам спорить. Рано еще.
← →
Думкин © (2004-07-27 06:31) [154]> [133] Огромное Кулясищще © (26.07.04 19:01)
> 2 Юрий Зотов:
> И всё же тем не менее. Ок, не учёл возможное представление
> числа. Допустим, починю. Вы скажете, что найдёте ещё ошибок.
> Найдёте. Опять починю. Вы опять скажете. И найдёте?
Это все замечательно. Только у человечества есть много таких замечательных примеров, когда люди презирая теорию пытаются что-то сделать, дабы показать этим недотепам. Примеры:
1. Посторение вечного двигателя при этом якобы опираясь на механику Ньютона, термодинамику и т.п.
2. Трисекция угла
3. Удвоение куба
4. Поиск решения уравнений степени выше 4-й в радикалах.
Вам еще? Греки удваивали куб, но их теория была слаба. После математики показали, что не получиться как хотелось. И многое иное. И используя механику Ньютона вы никогда не создадите механический вечный двигатель - по доказательству. В Париже это вполне заслуженно отправляют в помойку.
А вот с правильными многоугольниками. Гаусс сваял теорию, и тут же привел пример построения правильного 17-ти угольника.
Но всегда, всегда находятся те кто сие отвергает. Я не против если бы они вообще отвергали и создавали свое - ради бога. Но они почему-то прочитав 3 страницы из физики Кикоина - начинают строить вечный двигатель. Вот этого понять не могу. Или таки упорно делят произвольный угол на 3 равные части. Оно полезно, и я это делал - но чтобы пробудить что-то в понимании, а не чтобы построить - ибо знал что никак.
И вы так и будете латать ее(свое детище). И так будет со многими вашими творениями. Я бы работника с таким подходом уволил нафиг. Может что-то все-таки не так?
← →
Юрий Зотов © (2004-07-27 08:38) [155]> GrayFace (26.07.04 11:37) [45]
В пылу дискуссий даже пропустил, что Вы выложили новый вариант. Мои извинения.
Оценивая код всех представленных "калькуляторов", могу сказать, что пока что Ваш, IMHO - единственный, вообще заслуживающий хоть какого-то внимания. Алгоритм пока не анализировал - еще не пришло время, он и так валится. Вот что выяснилось.
Тест 1.
Выражение: ---5
Результат: -5
Комментарий: Бредовое выражение нормально вычисляется. С огромной натяжкой еще можно сказать, что это не бред, а три унарные операции, но пользователь такого калькулятора будет очень сильно удивлен.
Тест 2.
Выражение: --+5
Результат: 5
Комментарий: точно такой же, как и в тесте 1.
Тест 3.
Выражение: -+-5
Результат: Invalid floating point operation at offset 4
Комментарий: Если бред в тесте 2 проходит нормально, то почему точно такой же бред в тесте 3 дает ошибку? Ведь нем точно те же самые три унарные операции - где логика? Почему пользователь должен запоминать какие-то совершенно искусственные правила составления выражений?
Сорри, но мы говорили о НОРМАЛЬНОМ калькуляторе. Ваш же пока еще таковым не является.
← →
Alx2 © (2004-07-27 08:52) [156]>Юрий Зотов © (27.07.04 08:38) [155]
>Тест 1.
>Выражение: ---5
>Результат: -5
>Комментарий: Бредовое выражение нормально вычисляется. С >огромной натяжкой еще можно сказать, что это не бред, а три >унарные операции, но пользователь такого калькулятора будет >очень сильно удивлен.
Кстати говоря, то же самое "бредовое" выражение в Delphi вычисляется с читается синтаксически верным :) И в Excel, кстати, тоже. Видимо, разработчики тоже не писали калькулятор в свое время ;-)
← →
Сергей Суровцев © (2004-07-27 09:04) [157]>Думкин © (27.07.04 06:31) [154]
>Это все замечательно. Только у человечества есть много таких
>замечательных примеров, когда люди презирая теорию пытаются что-
>то сделать, дабы показать этим недотепам. Примеры:
>1. Посторение вечного двигателя при этом якобы опираясь на
>механику Ньютона, термодинамику и т.п.
Это благо, что они есть, ибо без них Вы все еще грызли бы бананы вися вниз головой. Когда какой-то чудак изобретал колесо его сородичи тащили мамонта, а он наверняка остался без обеда т.к. "кто не работает тот не ест". Но он все равно делал. И сделал. Стремление делать что-то свое, самостоятельное - единственная движущая сила прогресса. Конечно получится не у всех, даже не у большинства. И лишь единицы смогут сделать обобщения, вывести общие выводы и построить теорию для направления в целом, но они все равно будут. И это есть хорошо.
А насчет вечного двигателя - это даже не смешно. Вам, как лесному эльфу, возможно и не известно, но их уже десятки, если не сотни. Вы опять же хотите свести все к диалектической ловушке, когда при любых условиях будете правы. Дескать ничего вечного быть не может и энергия из "ниоткуда" не берется. И это, естественно верно. Но это не противоречит возможности создания двигателя (заметьте, производящего работу, а не просто преодолевающего трение), причем даже элементарного механического на основе ЛЮБОЙ из природных движущих сил, наиболее постоянной и доступной из которых является гравитация. И если такой двигатель проработает хотя бы 50 лет, причем без каких либо усилий с Вашей стороны, то какой же он если не вечный?
Конечно, я знаю, что такой двигатель Вы тут же назовете даровым и тут же скажете, что их то Вы как раз не отвергаете. Но ведь на лицо просто явная подмена понятий - реальную работающую конструкцию назовем даровым, а бредовую не работающую вечным двигателем. И можно ходить и гордиться своей правотой, но разве это будет честно? И разве в этом будет смысл?
>Огромное Кулясищще
Программу желательно садиться писать тогда, когда все уже придумано и продумано. И в голове не один десяток раз прокручено. Когда точно знаешь - что будешь делать и как все это будешь делать. А думать и писать паралельно... Глубоко паралельно и получится.
← →
Юрий Зотов © (2004-07-27 09:07) [158]> Alx2 © (27.07.04 08:52) [156]
Вот только в Delphi и -+-5 тоже вычисляется вполне нормально. То есть, раз уж разработчики специфицировали, что последовательнось унарных операций считается синтаксически верной, так они и обеспечили, что она ВСЕГДА синтаксически верна.
Есть разница, Вы не находите?
← →
Думкин © (2004-07-27 09:08) [159]> [157] Сергей Суровцев © (27.07.04 09:04)
А вот передергивать не надо. Стыдно должно быть при таком коверкании.
Речь не об этом, поэтому прочитай внимательно и остынь, о эльф лесной.
И не надо про иные вечные. вопрос идет о вполне явном вечном двигателе 1-го рода. Не надо, перед детьми не стыдно?
← →
Alx2 © (2004-07-27 09:13) [160]>Юрий Зотов © (27.07.04 09:07)
Согласен. Просто для меня естественна последовательность унарных операций. И я не согласился, что она вдруг оказалась бредовой.
А с -+-5 - глюк, конечно :)
Страницы: 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.83 MB
Время: 0.133 c