Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
3-1096895604
Alex_V
2004-10-04 17:13
2004.11.07
Как избавиться от изменения размеров


3-1097233419
NewDelpher
2004-10-08 15:03
2004.11.07
select в функции не получается


1-1098646798
Zloy_SHREK
2004-10-24 23:39
2004.11.07
Проблема с полосой прокрутки.


1-1098275631
СержК
2004-10-20 16:33
2004.11.07
Как отследить из приложения - что на машине запущен Excel?


14-1098004825
QuasiLamo
2004-10-17 13:20
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский