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

Вниз

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

 
Anatoly Podgoretsky ©   (2004-07-26 15:46) [80]

унарный минус имеет более высокий приоритет


 
Григорьев Антон ©   (2004-07-26 15:51) [81]


> Огромное Кулясищще ©   (26.07.04 15:42) [78]
> 2 Сергей суровцев:
>
> >А вот список этих правил должен быть обнародован ПЕРЕД
> калькулятором. А уже сам калькулятор должен соответствовать
> заявленной спецификации. Тогда не придется спрашивать согласие
> на каждое действие в отдельности. :))
>
> А я так и сделал.


Нет, не сделал. Правила должны быть записаны в виде [59]. Чтобы про любое выражение можно было сказать, допустимо ли оно синтаксически, руководствуясь только формальным подходом, а не той способностью к додумыванию, которой нет у компьютера.

> >2^-2 - синтаксически вполне допустимое выражение. 2^(-2)
> - тоже. Следовательно, оно должно правильно вычисляться
> в любой форме.
>
> Не согласен. В обычной записи на бумаге мы можем написать,
> например, основание 2 и показатель -2*3. Как же вы эту запись
> запишите строчкой без скобок?


А при чём здесь это? Если, например, выражение 2*(2+3) не может быть записано без скобок, то это ещё не повод требовать писать 2*(2) вместо 2*2.


 
Внук ©   (2004-07-26 15:58) [82]

>>Огромное Кулясищще ©   (26.07.04 15:42) [78]
> >2^-2 - синтаксически вполне допустимое выражение. 2^(-2)
> - тоже. Следовательно, оно должно правильно вычисляться
> в любой форме.
>
> Не согласен.
 Что такое "a  в степени b" - это число или выражение a, далее знак ^, далее число или выражение b. -2 является числом? Безусловно. Следовательно, 2^-2 допустимо. Равно как и 2^(-2). И если бы была построена грамматика, таких вопросов бы не возникало ни у создателя программы, ни даже у тестировщика.


 
Юрий Зотов ©   (2004-07-26 16:14) [83]

> Сергей Суровцев ©   (26.07.04 15:32) [76]

> Конечно меньше, иногда намного ибо иначе не было бы движения
> вперед вообще. Новое поколение успевало бы только усвоить те
> же знания, что и предыдущее. За доказательство теоремы
> Пифагора в 14м веке давали звание магистра. А разрыв в объеме
> знаний в пределах начала и конца 20го века - несколько
> порядков. Другое дело, что подобная скорость и достигается
> путем освоения в теории (быстро и четко) того, что предыдущее
> поколение вымучило практикой (и созданием, собственно, этой
> теории).


Подчеркнутая мною фраза говорит, что если речь идет обо всем человечестве и исторически значимом промежутке времени (таком, за который предыдущие поколения УСПЕЛИ создать теорию и последующим осталось только ее изучить), то Вы правы. А если речь идет о двух конкретных людях со сравнительно небольшой разницей в возрасте (за которые новых значимых обощений человечество не наработало)- то вряд ли. Потому что младшему придется усваивать практически все то же самое, что проходил и старший.

> Огромное Кулясищще ©   (26.07.04 15:42) [78]

Видите ли, в чем дело... обычная запись на бумаге и запись в ОДНУ строку - вещи разные. Не стоит сравнивать стулья с балалайками.

<factor> := <operand> | <operand> ^ <factor>
<operand> ::= <number> | <function> | ( <expression> )
<number> ::= <sign> <unsigned> //если рассматривать только целые
<sign> ::= + | - | <empty>
<empty> ::=

И этим ВСЕ сказано. А яблоки падают вниз, а не вверх - хотите Вы того, или нет. Ваше согласие им, извините, по барабану.


 
Romkin ©   (2004-07-26 16:22) [84]

Задача сравнительно легко, быстро и кратко решается конечным автоматом магазинного типа :)
Вот только чтобы понять, что такое "автомат с магазином" (это не Калашников!) нужно немного теории :)


 
Игорь Шевченко ©   (2004-07-26 16:30) [85]

Romkin ©   (26.07.04 16:22)


> Задача сравнительно легко, быстро и кратко решается конечным
> автоматом магазинного типа :)


Насколько я помню, для полькой записи. Нет ?


 
Romkin ©   (2004-07-26 16:36) [86]

По-моему, для польской магазин уже не нужен...


 
Огромное Кулясищще ©   (2004-07-26 16:43) [87]

<factor> := <operand> | <operand> ^ <factor>
<operand> ::= <number> | <function> | ( <expression> )
<number> ::= <sign> <unsigned> //если рассматривать только целые
<sign> ::= + | - | <empty>
<empty> ::=

И этим ВСЕ сказано. А яблоки падают вниз, а не вверх - хотите Вы того, или нет. Ваше согласие им, извините, по барабану.


Простите, но это меня начинает бесить. Только возникает дельная мысль, как вы из какой-то книжки или ещё откуда-то достаёте какую-то запись и тычете ею. Мне эта запись ничего не говорит, и более того, теперь я её презираю. Мало ли что мог кто-то когда-то написать. Мне абсолютно пофиг, делать 2^-2 допустимым или нет, но предложения типа "делай, как Пётр I велел" я не поддерживаю.

По делу. Всё, ваяю скобки. Скобки только круглые, раз уж разница между стулом и балалайкой такая огромная.

Извиняйте, вспылил тут немного.


 
Игорь Шевченко ©   (2004-07-26 16:44) [88]

Romkin ©   (26.07.04 16:36)

У меня осталось впечатление по "Ахо, Ульман.  Теория синтаксического анализа, перевода и компиляции, М., Мир, 1978". Правда, читал я ее в 80-ых годах, мог и позабыть :)


 
calm ©   (2004-07-26 16:45) [89]


> Мне эта запись ничего не говорит

Вот и не пылите.
Если люди говорят на языке, который вы не понимаете, то вы презираете этот язык?


 
Anatoly Podgoretsky ©   (2004-07-26 16:46) [90]

Огромное Кулясищще ©   (26.07.04 16:43) [87]
Это плохо - надо сдерживаться
А насчет непонимания, самое время восполнить этот пробел.


 
DiamondShark ©   (2004-07-26 16:48) [91]


> Romkin ©   (26.07.04 16:36) [86]
> По-моему, для польской магазин уже не нужен...

Именно для польской он и нужен ;)


 
Юрий Зотов ©   (2004-07-26 16:55) [92]

> Romkin ©   (26.07.04 16:36) [86]

Именно нужен.

Обычная запись: (a+b)*c
Польская запись:  ab+c*

Алгоритм работы МП-вычислителя:
1. Встретили операнд - затолкнули его в стек.
2. Встретили операцию - вытолкнули их из стека два верхних операнда, произвели над ними эту операцию, результат затолкнули в стек.

Входной_символ    Содержимое_стека (вершина слева)
a                 a
b                 ba
+                 s (сумма a+b)
с                 cs
*                 r (произведение s*с)


 
Игорь Шевченко ©   (2004-07-26 16:57) [93]

Юрий Зотов ©   (26.07.04 16:55)

Спасибо, значит, память мне не совсем изменяет :)


 
Огромное Кулясищще ©   (2004-07-26 17:03) [94]

Всё, тестирую своё чудо.


 
Юрий Зотов ©   (2004-07-26 17:06) [95]

> Огромное Кулясищще ©   (26.07.04 16:43) [87]

> но предложения типа "делай, как Пётр I велел" я не поддерживаю.

Это велит не Петр I и даже не Юрий Зотов.
:о)

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

Понимаете, арифметика говорит, что 2*3 будет 6. Можете с этим соглашаться, а можете придумать и свою собственную арифметику - но результат в любом случае будет один и тот же: до тех пор пока Вы не сформулируете какой-либо ОДНОЗНАЧНЫЙ алгоритм (или таблицу) умножения, умножать Вы не сможете.


 
Kerk ©   (2004-07-26 17:06) [96]


> Игорь Шевченко ©   (26.07.04 16:57) [93]
> Юрий Зотов ©   (26.07.04 16:55)

Кончайте подсказывать. Это не спортивно! Они должны свой способ придумать!


 
Григорьев Антон ©   (2004-07-26 17:24) [97]


> Kerk ©   (26.07.04 17:06) [96]
>
> > Игорь Шевченко ©   (26.07.04 16:57) [93]
> > Юрий Зотов ©   (26.07.04 16:55)
>
> Кончайте подсказывать. Это не спортивно! Они должны свой
> способ придумать!


Ну, судя по [87], эти подсказки всё равно впрок не идут.


 
Юрий Зотов ©   (2004-07-26 17:26) [98]

> Игорь Шевченко ©   (26.07.04 16:57) [93]

Память... какое красивое имя...
:о)


 
Огромное Кулясищще ©   (2004-07-26 17:27) [99]

2 Юрий Зотов:

Сглотнув слюну, выдаю вам:

http://www.hot.ee/gelphi/Calculator.zip


 
Romkin ©   (2004-07-26 17:30) [100]

Юрий Зотов ©  (26.07.04 16:55) [92] А разве здесь нельзя заменить стек двумя регистрами?


 
calm ©   (2004-07-26 17:34) [101]


> А разве здесь нельзя заменить стек двумя регистрами?

Это как, позвольте?


 
Romkin ©   (2004-07-26 17:41) [102]

calm ©  (26.07.04 17:34) [101] Лемма: для польской записи глубина стека не превышает двух операндов :))
Учитывая только двухместные операции, разумеется.


 
Юрий Зотов ©   (2004-07-26 17:42) [103]

> Romkin ©   (26.07.04 17:30) [100]

Двух может и не хватить. Вот здесь, например, нужно уже три:
(a+b)*c-(d+e)/f
ab+c*de+f/-

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


 
Romkin ©   (2004-07-26 17:46) [104]

А, точно :)


 
Юрий Зотов ©   (2004-07-26 17:48) [105]

> Огромное Кулясищще ©   (26.07.04 17:27) [99]

При щелчке по ссылке IE виснет.


 
calm ©   (2004-07-26 17:49) [106]


> Лемма: ...

:)


 
calm ©   (2004-07-26 17:50) [107]


> При щелчке по ссылке IE виснет.

Мне исправно предложилось скачать файл.
Но я не стал :)


 
Игорь Шевченко ©   (2004-07-26 17:53) [108]

Огромное Кулясищще ©   (26.07.04 17:27) [99]

А как интерпретировать результат вида -1,11111111111111E102}E{66


 
Игорь Шевченко ©   (2004-07-26 17:55) [109]

Огромное Кулясищще ©   (26.07.04 17:27) [99]

Вдогонку - глючит по самое не могу, Access Violations сплошь и рядом. Может, лучше теорию поучить ? :)


 
Romkin ©   (2004-07-26 17:59) [110]

:)))))))


 
calm ©   (2004-07-26 17:59) [111]


> Может, лучше теорию поучить ? :)

Кулясищще, не поддавайся на провокации, держись!
Другого такого развлечения я в инете не найду :)

А если серьезно, то по-моему, необходимость теоретической подготовки продемонстрирована весьма наглядно, может и вправду пора сдаваться?


 
Игорь Шевченко ©   (2004-07-26 18:03) [112]

Очень любопытные результаты получаются при вычислении выражения вида "1+(1-1))))" - результатом является "1}))"

Желающие могут попробовать вычислить выражение вида "1,2/(1,2222-1,22221)" (можно вместо запятых использовать точки)


 
Ihor Osov'yak ©   (2004-07-26 18:06) [113]

2 [112] Игорь Шевченко ©   (26.07.04 18:03)

> 1,2/(1,2222-1,22221)

Ну Вы и мерзопакостный тип :-).

С возвращением!


 
Игорь Шевченко ©   (2004-07-26 18:10) [114]

Ihor Osov"yak ©   (26.07.04 18:06)


> Ну Вы и мерзопакостный тип :-).


Пустили козла в огород - дали программку потестировать :)


> С возвращением!


Отпуск всегда кончается раньше, чем хотелось бы :)


 
Romkin ©   (2004-07-26 18:15) [115]

Хм. А фигурные скобки откуда берутся? 8-\


 
Nous Mellon ©   (2004-07-26 18:18) [116]

Ну раз уж  Михей сел писать калькулятор - быть беде :)


 
Юрий Зотов ©   (2004-07-26 18:18) [117]

> Огромное Кулясищще ©   (26.07.04 17:27) [99]
Ну виснет у меня IE, и все тут. Не скачивается ссылка.

> Игорь Шевченко ©   (26.07.04 18:03) [112]
> 1,2/(1,2222-1,22221)

Немного странно. Подобный "зубодробительный" тест я тоже держал в загашнике, но никак не ожидал, что его "зубодробительность" проявится уже при разнице всего лишь в 6-м знаке. Ожидал, что потребуется знаков 15-20 (в зависимости от используемого внутренного типа). Похоже, что это глюк не арифметики, а парсера.


 
Игорь Шевченко ©   (2004-07-26 18:23) [118]

Юрий Зотов ©   (26.07.04 18:18)


> Похоже, что это глюк не арифметики, а парсера.


Разумеется. Судя по тому, что в результате появляются нечисловые символы, всю программу можно смело отправлять в Recycle Bin.


 
Огромное Кулясищще ©   (2004-07-26 18:29) [119]

>Очень любопытные результаты получаются при вычислении выражения вида "1+(1-1))))" - результатом является "1}))"

Да, у меня на портативном калькуляторе тоже любопытные результаты получаются.

>Похоже, что это глюк не арифметики, а парсера.

Вряд ли.


 
Igorek ©   (2004-07-26 18:31) [120]

С теорией и дурак напишет - ты попробуй без теории...



Страницы: 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.69 MB
Время: 0.101 c
3-1097230190
Samick
2004-10-08 14:09
2004.11.07
получается чтото вроде поиска


3-1097051119
cad2206
2004-10-06 12:25
2004.11.07
Как лучше сформировать запрос?


4-1095749888
secret
2004-09-21 10:58
2004.11.07
Как в “Delphi 6” поменять шрифт, в котором выводится надпись на з


1-1098193662
Pepperok
2004-10-19 17:47
2004.11.07
Свой ScrolBar


3-1096745805
matt
2004-10-02 23:36
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский