Форум: "Потрепаться";
Текущий архив: 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