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

Вниз

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

 
VMcL ©   (2004-10-03 20:04) [680]

>>Kerk ©  (03.10.04 16:02) [679]

Та ну тебя. Задолбали эти куркуляторы. Давайте лучше компиляторы писАть...


 
Mihey_temporary ©   (2004-10-03 21:26) [681]

Я на своё забил. Действительно, невозможно написать без знания теории.


 
Anatoly Podgoretsky ©   (2004-10-03 21:27) [682]

Mihey_temporary ©   (03.10.04 21:26) [681]
Молодец, хватило сил признать, уважаю.


 
Ihor Osov'yak ©   (2004-10-03 21:38) [683]

Да уж.. Почти хиппи енд. Нужно веточку сохранить, молодым да рьяным иногода показывать, поучительная..


 
Nous Mellon ©   (2004-10-03 22:17) [684]


> Молодец, хватило сил признать, уважаю.

Он вообще сильно изменился за последнее время


 
Kerk ©   (2004-10-04 13:21) [685]


> >>Kerk ©  (03.10.04 16:02) [679]
>
> Та ну тебя. Задолбали эти куркуляторы. Давайте лучше компиляторы
> писАть...

Опять без теории? :)))))
А насчет куркулятора все же интересно мнение общественности... Ну да ладно... хрен с ним...


 
bar   (2004-10-04 14:43) [686]

Извините все сообщения не прочитал, но решил пролистать до конца и добавить свое в поддержку Огромное Кулясищще и прочих энтузиастов кодирования без изучения теории.

>>Юрий Зотов
Написать калькулятор без знания теории можно.
Это я знаю из собственного опыта написания калькулятора для лабораторной по программированию на втором курсе одного ВУЗА (это было года два назад). Хотя совсем без теории не обошлось. Пришлось самому теории выдумывать. История вкратце такая...

Все писали что то вроде виндовского калка, но только с четыльмя действиями, а я решил выпендриться и заставить калк считать любое выражение записанное по определенным правилам.
Сначала четко задал в каком виде можно задавать выражение (сделал как в делфи или бейсике: основные действия +*-/ функции ИМЯ(арг,агр...) никаких sin5 или 5+--8).
Далее долго парился и врезультате получился рекурсивный интерпретатор выражений безо всяких преобразований в польскую и прочии записи. Отсутствовала в чистом виде стадия лексического и синтаксического анализа. Была функция, которая искала в выражении подстроку между операторами с одним приоритетом, затем рекурсивно вызывала себя с этой подстрокой в качестве параметра и так до тех пор пока в качестве парамера не передоволось либо число, либо вызов функции. Если это было число или вызов ф-ции, то возвращлся результат. Что то вроде этого.

function doOper(str:String):real;
begin
если str число то возвращаем его в качестве результата
если str вызов функции, то вычисляем результат и возвр. его.
выделяем левую часть выражения left, правую rich и оператор между ними oper
...
if oper="*" then result:=doOper(left)*doOper(rich);
if oper="+ then result:=doOper(left)+doOper(rich);
....

end;
например для строки (10+4)*(sin(2*3)-1)

вызывалось
doOper("(10+4)*(sin(2*3)-1)");
doOper("(10+4)")*doOper("(sin(2*3)-1)");
(doOper("10")+doOper("4"))*(doOper("sin(2*3)")-doOper("1"));
и так далее...
Точно алгоритм не помню, поскольку дело было давно, сам исходник не сохранился. Но есть работающий exe-шник. И он вычисляет любое вырожение написанное в соответствии с определёнными правилами.
И вопреки
{Юрий Зотов ©   (24.07.04 18:18) [1] } я не нашёл такого выражения которое он не мог вычислить. Была либо синтаксическая, либо арифметическая ошибка.
Желающим могу выслать приложение (весит килобайт 500), это не вершина кодинга, но калькулятор был первым моим настояшим приложением поэтому я себе прощаю некоторые недочеты допущенные в нем. Но то, что я написал калькулятор не зная теории автоматов, и прочего это правда. Уж поверьте мне на слово.
Так, что написать калькулятор без знания теории, можно, нужно лишь придумать свою теорию :).
Удачи всем.


 
Думкин ©   (2004-10-04 14:47) [687]

> [686] bar   (04.10.04 14:43)
> И вопреки
> {Юрий Зотов ©   (24.07.04 18:18) [1] } я не нашёл такого
> выражения которое он не мог вычислить. Была либо синтаксическая,
> либо арифметическая ошибка.
....
> Так, что написать калькулятор без знания теории, можно,
> нужно лишь придумать свою теорию :).

Если все-таки внимательно прочитать:
> [1] Юрий Зотов ©   (24.07.04 18:18)
> я уже дважды писал: "До тех пор, пока не будет привлечена теория, ВСЕГДА найдется такое выражение, которое такой калькулятор распознать и выполнить не сможет".

Вы ее привлекли или нет? В чем вы увидели противоречие?


 
bar   (2004-10-04 15:36) [688]

>>Думкин ©   (04.10.04 14:47) [687]
Насколько я понял Зотова он говорит о теории автоматов, лексического анализа.
Такие теории в готовом виде я не использовал.
Но если Зотов говорил о теории вообще, то никакого противоречия нет. Поскольку что такое теория.
Теория это некоторое предположение, требующее доказательства. Наример, я предпологаю, что для вычисления выражения нужно то-то и то-то. Доказательством этого будет рабочий код.
В этом случае написание любой программы основывается на теории, что для решения задачи, нужно выполнить то-то и то-то.


 
Юрий Зотов ©   (2004-10-04 21:09) [689]

> bar   (04.10.04 14:43) [686]

> Извините все сообщения не прочитал...

> Написать калькулятор без знания теории можно.
> ...
> Хотя совсем без теории не обошлось. Пришлось самому теории
> выдумывать.

А если бы Вы прочитали ВСЕ сообщения, то увидели бы, что я несколько раз говорил: "до тех пор, пока либо не будет использована готовая терия, либо не будет придумана своя".

Вы придумали свою. Можно говорить о том, верная Ваша теория или нет, лучше она существующей или хуже - но теорию Вы все равно использовали, это факт.

Так что - никакого противоречия.

P.S.
И в общеизвестной теории использование польской записи для калькулятора совершенно не обязательно. Можно и без нее.

P.P.S.
Согласитесь, что если бы на момент написания калькулятора Вы знали бы уже готовую теорию, то написали бы программу гораздо быстрее. А ведь спор с этого и начался, это уже потом на калькуляторы перешли, просто в качестве примера.


 
GrayFace ©   (2004-10-10 16:27) [690]

Mihey_temporary ©   (03.10.04 21:26) [681]
Я на своё забил. Действительно, невозможно написать без знания теории.

Я написал. Ошибок найти никто не может. И чтобы ни говорил АП, теорию я не использовал. И что бы ЮЗ не говорил, мой алгоритм - это не теория. Определение теории по Ожегову: "Совокупность обобщенных положений, образующих науку или раздел какой-н. науки, а также совокупность правил в области какого-н. мастервтва."

Kerk©(03.10.04 16:02) [679]
Читер! Сдесь не место теористам! Мы пишим калькуляторы БЕЗ ТЕОРИИ! :)


 
Nous Mellon ©   (2004-10-10 16:31) [691]


>  а также совокупность правил в области какого-н. мастервтва."

УУу зря опубликовал, тебе щас люой адгоритм под это положение подведут :)


 
Defunct ©   (2004-10-10 18:48) [692]

>> Я на своё забил. Действительно, невозможно написать без знания теории.

> И что бы ЮЗ не говорил, мой алгоритм - это не теория.

2 GrayFace
В вашей программе Вы использовали как минимум:
ТЕОРИЮ ИНФОРМАЦИИ И КОДИРОВАНИЯ
ТЕОРИЮ ПРОГРАММИРОВАНИЯ
ТЕОРИЮ СИСТЕМ


 
Mihey_temporary ©   (2004-10-10 19:18) [693]

2 GrayFace:

Например, в твоём калькуляторе 0^0 = 1. На самом деле операция не определена.


 
Defunct ©   (2004-10-10 19:43) [694]

> Например, в твоём калькуляторе 0^0 = 1. На самом деле операция не определена

Брехня, 0^0 = 1, любое число в степени 0 равно единице.


 
Nous Mellon ©   (2004-10-10 19:52) [695]


>  [694] Defunct ©   (10.10.04 19:43)

Тебя в школе учили? Или это подколка?


 
Defunct ©   (2004-10-10 20:21) [696]

> Nous Mellon

0! = 1 - аксиома.
0^0 = 1 - тоже аксиома.
(все знают, что это не так, но тем не менее все это используют даже MatCad и калькулятор в Windows).

Если вы пользуетесь в своих рассуждениях такими материалами
http://aldebaran.ru/kid/levsh/levsh4/index.shtml?2 ,
тогда спорить бесполезно.


 
Nous Mellon ©   (2004-10-10 20:27) [697]


> 0! = 1 - аксиома.
> 0^0 = 1 - тоже аксиома.
> (все знают, что это не так, но тем не менее все это используют
> даже MatCad и калькулятор в Windows).
>
> Если вы пользуетесь в своих рассуждениях такими материалами
> http://aldebaran.ru/kid/levsh/levsh4/index.shtml?2 ,
> тогда спорить бесполезно.

Я не пользуюсь никакими материалами кроме тех скромных знаний которые мне дал мой преподаватель. И мне по барабану чего там использует каклькулятор Виндоус. Я просто знаю про классическу неопределенность.
Не я ее придумал. Мой сосед Вася вообще в математике не разбирается, что и мне забить?


 
Defunct ©   (2004-10-10 20:39) [698]

> И мне по барабану чего там использует каклькулятор Виндоус.

Ну раз по-барабану, тогда нечего тут поклепы на GrayFace делать, сперва разберись почему так.


> Я просто знаю про классическу неопределенность.

Докажи неопределенность.


 
Nous Mellon ©   (2004-10-10 20:44) [699]


> Ну раз по-барабану, тогда нечего тут поклепы на GrayFace
> делать, сперва разберись почему так.

Я делал на него поклепы? Вовсе нет. Я делал на тебя поклепы потому что твой псевдоматематический бред и неграмотность прут неудержимо.
> Докажи неопределенность.

Зачем изобретать велосипед.


 
Mihey_temporary ©   (2004-10-10 20:51) [700]

В прицнипе, 1 или не определено (хотя всё же не определено - http://www.hot.ee/mvps12/screen1.jpg) - это не так уж важно, так как ошибка явно не алгоритмическая. Но пока GrayFace будет исправлять (если будет), есть время поискать другие баги.


 
Alx2 ©   (2004-10-10 21:02) [701]

>Defunct ©   (10.10.04 20:39)

Результат от операции 0^0 можно получить разными путями, как и 0/0. Причем, этот результат может быть совершенно произвольным, либо, напротив, заданным заранее. Просто классическая "неопределенность", которую можно приручить, например, рядами :). Но для общего случая рецепта нет.

Про 0! хорошо расскажет гамма-функция, хотя, судя по вашим перлам, у нее это вряд-ли получится.


 
Defunct ©   (2004-10-10 21:25) [702]

> Я делал на него поклепы? Вовсе нет.

Делал - [693].

> Я делал на тебя поклепы потому что твой псевдоматематический бред и неграмотность прут неудержимо.

В чем это проявилось?
В свои 17 нет необходимости грубить.

>> Докажи неопределенность.
> Зачем изобретать велосипед.

Не изобретай велосипед умник ты наш, приведи ссылку или общепризнанный программный продукт в котором 0^0 <> 1.

> так как ошибка явно не алгоритмическая. Но пока GrayFace будет исправлять (если будет), есть время поискать другие баги.

В этом отношении ему нечего исправлять.

procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowMessage(Format("%F",[Power(0,0)]));
end;


Проверте также в MathCad и в Calc поставляемым с Windows

> Результат от операции 0^0 можно получить разными путями, как и 0/0.

Покажите, как можно получить рез-тат 0^0  (0^0 = 1 аксиома, см. справочник по математике).
И покажите как можно получить рез-тат 0! (0! = 1 аксиома).


 
Mihey_temporary ©   (2004-10-10 21:30) [703]


> Покажите, как можно получить рез-тат 0^0  (0^0 = 1 аксиома,
> см. справочник по математике).


Я же привёл фотку из справочника по математике.


 
Nous Mellon ©   (2004-10-10 21:31) [704]


> Делал - [693].

Ты чего слепой? Ты на ник вообще смотришь?
> Покажите, как можно получить рез-тат 0^0  (0^0 = 1 аксиома,
> см. справочник по математике).

Тебе ж только что ссылку дали!

Шарка что-ли процитировать


 
Alx2 ©   (2004-10-10 21:34) [705]

>Defunct ©   (10.10.04 21:25)
Пример для 0^0:
Поищем предел для (1/n)^(1/ln(n)) при n->infinity
Странно, что результат = exp(-1) ? :-)

Про факториал нуля наглядного пока ничего не нашел. Сорри.


 
Mihey_temporary ©   (2004-10-10 21:35) [706]

Впрочем, я нашёл ошибку посерьёзней (версия последняя).

2^2^3 = 64  (а не 256)

Очевидно, степень считается в калькуляторе сначала, тогда как сама запись по идее должна быть идентичной:


 3
2       =      8      =
2              2            256


Если, конечно, для калькуляторов кроме 0^0 не приняты ещё и другие правила относительно порядка вычисления степени, то тогда действительно ошибка.


 
Nous Mellon ©   (2004-10-10 21:39) [707]


>  3
> 2       =      8      =
> 2              2            256

Тут как раз ИМХО 2 в шестой и будет как ни крути или я чего не понял?


 
Alx2 ©   (2004-10-10 21:50) [708]

>Nous Mellon ©   (10.10.04 21:39)
Возведение в степень некоммутативно. Скобки нужны.


 
Nous Mellon ©   (2004-10-10 21:52) [709]


> Возведение в степень некоммутативно. Скобки нужны.

Да. Я их подразумевал.


 
Mihey_temporary ©   (2004-10-10 21:56) [710]

Однако наверное я поторопился.


 
Defunct ©   (2004-10-10 21:59) [711]

> Я же привёл фотку из справочника по математике.

А я привел функцию из модуля math, также общеизвестные и признанные программные продукты. Как ни странно, только ссылка на статью для детей совпадает со страницей из вашего справочника, может такой справочник?

Nous Mellon ©   (10.10.04 21:31) [704]
С хамами лучше вообще не разговаривать.

Alx2 ©   (10.10.04 21:34) [705]


lim(x^n) = -(1/x)*(0-x) = x/x = 1
n->0


 
Mihey_temporary ©   (2004-10-10 22:03) [712]

Гм, хотя и другие калькуляторы выражений дают 64, но всё же...

Почему считают 2^2^3 как (2^2)^3, а не 2^(2^3)??? Ведь если представить, что значок ^ - это эдакий push up на строчку выше, то должно быть 2 в степени 2^3.


 
Alx2 ©   (2004-10-10 22:08) [713]

>Defunct ©   (10.10.04 21:59)

> lim(x^n) = -(1/x)*(0-x) = x/x = 1
> n->0

Это, простите, как получилось?  Я, конечно, согласен, что
-(1/x)*(0-x) = x/x при x<>0. Но не более того.

-------------
А мой пример вас не убедил? :)
Тем примером я хотел сказать, что если по-разному устремлять к нулю некоторые последовательности, можно добиться произвольных значений предела.
Еще раз:
Предел (1/n)^(-ln(a)/ln(n)) = exp(ln(a))=a.
А значение "a" мы можем выбирать весьма произвольно. И, соответственно, весьма произвольно можем получить значение "0^0".

Вероятно, мы недопонимаем друг друга, так как у меня возникает чувство, что я объясняю таблицу умножения.


 
Mihey_temporary ©   (2004-10-10 22:10) [714]

Ну хорошо, теперь GrayFace попался (щас окажется, что меня вообще глючит, все подумают, что я обкурился и начнётся потеха).

-1^2 = 1

Низачто! -1^2 = -1*1^2 = -1. Проверил на Adexpression (готовый калькулятор с Torry.net, по нему ориентируюсь).


 
Defunct ©   (2004-10-10 22:17) [715]

> Это, простите, как получилось?  
Разложив x^n в ряд тейлора.

> -(1/x)*(0-x) = x/x при x<>0. Но не более того.

Это почему же, мы ведь ищем предел.
При поиске предела:


Lim(x/x) = 1
x->бесконечность

Lim(x/x) = 1
x->0


> Вероятно, мы недопонимаем друг друга, так как у меня возникает чувство, что я объясняю таблицу умножения.

Возможно. так у меня такое же чувство..


 
Alx2 ©   (2004-10-10 22:20) [716]

>Defunct ©   (10.10.04 22:17) [715]
Если не против, предлагаю продолжить в личной переписке (ICQ).


 
Думкин ©   (2004-10-11 06:04) [717]

>  Defunct ©  

Штука в том, что ряд вещей можно дополнять не получая никаких проблем. Имеем натуральные числа - из них рациональные, и далее 3-я способами можем ввести действительные. Но что самое замечательное, то что эти 3 оказываются логически непротиворечивыми и эквивалентными(Вейерштрасс, Кантор, Дедекинд). После этого мы можем распространить на эти числа операции введенные для натуральных, целых а затем и рациональных чисел по непрерывности. Далее мы можемм вввести комплексные числа и опять распростанить операции. И уже никого не смущает sqrt(-1). Но вот в отношении 0^0 этого никак не удается, на что вам и намекает Alx2, ибо классические подходы приводят к некорректности данной конструкции. А то, что там говоритMathCad - ну кто без греха?


 
Kerk ©   (2004-10-11 14:20) [718]


> Kerk©(03.10.04 16:02) [679]
> Читер! Сдесь не место теористам! Мы пишим калькуляторы БЕЗ
> ТЕОРИИ!

Сперва прочитал "здесь не место террористам"... удивился... потом перечитал.. со второго раза понял.. :)))


 
Defunct ©   (2004-10-11 16:24) [719]

Думкин ©   (11.10.04 06:04)

Это все понятно,
сойдемся просто на мнении

0^0 = 1 удобно, и не противоречит 0^0 Є D.

Точно также как и 0!


 
Mihey_temporary ©   (2004-10-11 20:56) [720]

Так как насчёт [714]? Вы с этим согласны?



Страницы: 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.29 c
14-1098174162
Style
2004-10-19 12:22
2004.11.07
Горькая правда нашей жизни


3-1097124299
Black
2004-10-07 08:44
2004.11.07
Как осуществить переход в БД не используя DBNavigator?


3-1095523928
Zif
2004-09-18 20:12
2004.11.07
Проблема со скролингом в DBLookupListBox.


14-1098293517
Knight
2004-10-20 21:31
2004.11.07
Вот сколько в Delphi пользуюсь и только сейчас возник вопрос...


14-1097764485
Piter
2004-10-14 18:34
2004.11.07
Оказывается ValueHost взломали





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский