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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.85 MB
Время: 0.09 c
14-1097685355
DillerXX
2004-10-13 20:35
2004.11.07
Олимпиадная задачка... хехе... я чуть не повесился =)


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


9-1089703979
volser
2004-07-13 11:32
2004.11.07
Изменение тектуры


3-1097224039
Koala
2004-10-08 12:27
2004.11.07
Временные таблицы в Firebird 1.5.1


14-1097895529
080D:07BBh
2004-10-16 06:58
2004.11.07
На форуме осенее обострение что ли?