Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разное тестирование > Анализатор математических выражений


Автор: NightmareZ 18.10.2006, 03:53
Анализатор математических выражений.
Протестируйте, plz.
Вес: около трёхсот кб.

Сайты программы:
http://systemhalt.jino-net.ru/index.php?request=Calculator
http://systemhalt.nm.ru/other.html

Прямые ссылки для скачивания:
http://systemhalt.jino-net.ru/entities/Calculator/Calculator.zip
http://systemhalt.nm.ru/other/MathCalc.rar

user posted image

Автор: MaxB 18.10.2006, 10:09
Несколько замечаний:
1. При перемещении панели кнопок, всё начинает нереально глючить.
2. Поработать над дизайном интерфейса, сильно наляписто.
3. Слово "результат" второй раз можно не писать.

А вобщем, калькулятор мне понравился, хорошая замена стандартному. 


Автор: NightmareZ 19.10.2006, 09:37
Цитата

1. При перемещении панели кнопок, всё начинает нереально глючить.

Это глюк. Причём не мой, а стилей в WinXP. Если убрать XPManifest, то всё хорошо работает.... но некрасиво smile

Цитата

2. Поработать над дизайном интерфейса, сильно наляписто.

Оки.

Цитата

3. Слово "результат" второй раз можно не писать.

Это да. Не заметил smile

В следующей версии всё исправлю.

З.Ы. Человеки, комментируйте, plz, прогу. Может чего добавить полезного?

Автор: bems 25.10.2006, 03:04
(0)^(-1) и правда не существует?

Добавлено @ 03:05 
(0)^(0)=1?

Добавлено @ 03:06 
Это не ирония, я и правда не знаю как правильно... smile

Добавлено @ 03:13 
После копирования можно вставить только в эту же программу, даже для блокнота формат не катит. Помоему можно пожертвовать подсветкой или в чем там прикол...

Автор: bems 25.10.2006, 03:35
Это касается только копирования через контекстное меню. Если сделать ctrl+c то работает. Но зато если скопировать в твоей проге комбинацией текст 111, потом вставить в блокнот, потом скопировать из меню текст 222 и снова вставить в блокнот то в блокноте будет 111111

Если же и копировать и вставлять только в твою прогу, то возникает ощущение что есть два буфера - один доступен из меню, другой по комбинации - исправно помнит и то и другое smile

Добавлено @ 03:38 
это на ХР SP2

Добавлено @ 03:45 
 ceil(1.00000000000000000000000000000000000000000) =2 ,a
 ceil(1.0000000000000000000000000000000000000000)=1 

Автор: bems 25.10.2006, 03:55
Делаю 
Меню-Тригонометрические функции-sin(синус)
потом
Меню-Гиперболические функции-sinН(синус)
и получаю
 &in( &inh() ) 
Потом 
Меню-Константы-pi=...
и вижу Invalid class typecast
Константа е из меню просто меня игнорирует. 
А если кнопочками на панели, то все работает

Добавлено @ 03:56 
Дальше надоело smile

Добавлено @ 03:59 
это 1.4
Когда выложишь исправления - кричи, потестю

Автор: Exception 25.10.2006, 15:31
Цитата(bems @  25.10.2006,  04:04 Найти цитируемый пост)
(0)^(-1) и правда не существует?


0^(-1) = 1/0 по стандарту равняется inf (infinity). Неплохо бы оное реализовать.


Цитата(bems @  25.10.2006,  04:04 Найти цитируемый пост)
(0)^(0)=1?


Не-а. 0^0 по стандарту это неопределённость, то бишь NaN (not a number).

Автор: bems 26.10.2006, 01:15
Exception, ссылку на стандарт, плиз

Автор: Exception 26.10.2006, 20:32
http://docs.sun.com/source/806-3568/ncg_goldberg.html#918
http://ru.wikipedia.org/wiki/IEEE_754

Автор: bems 27.10.2006, 00:16
Exception, там корень из -1 это бесконечность, что чОс. Дальше автоматом не верю. Чо это за сайт? (первая ссылка)

А вторая - вообще типа "нету такой статьи"

Автор: Бонифаций 27.10.2006, 00:43
Цитата(Exception @  25.10.2006,  15:31 Найти цитируемый пост)
(0)^(0)=1?


тут afaik все в порядке. Любое число в 0 степени = 1 .

Кстати берем калькулятор из windows xp 

0 x^y 0 =

в реузльтате получаем 1


Автор: bems 27.10.2006, 02:35
Цитата(Бонифаций @  27.10.2006,  00:43 Найти цитируемый пост)
Любое число в 0 степени = 1 .

а ноль в любой степени равно ноль

Цитата(Бонифаций @  27.10.2006,  00:43 Найти цитируемый пост)
калькулятор из windows xp 

не показатель

Автор: Exception 27.10.2006, 08:33
Должен вас обоих разочаровать; учите программу 8 класса. Любое число в степени 0 равно единице - кроме самого нуля. Вам должно быть известно, что 0 в степени 0 всегда считалось неопределённостью, а в терминах http://en.wikipedia.org/wiki/IEEE_754, реализованного в Java, C# и некоторых компиляторах С++ -- NaN (Not a Number). Забавно, что первый сайт у тебя "не вызвал доверия", потому что это официальная документация http://sun.com. Если тебе неизвестно, что это за компания, боюсь нам не о чем разговаривать.

Автор: bems 27.10.2006, 11:41
Цитата(bems @  27.10.2006,  00:16 Найти цитируемый пост)
 там корень из -1 это бесконечность
Читал по диагонали, щас монял свою ошибку


Цитата(Exception @  27.10.2006,  08:33 Найти цитируемый пост)
Если тебе неизвестно, что это за компания

Известно. smile  smile 

Автор: NightmareZ 27.10.2006, 16:51
Итаг, по порядку....


Цитата(MaxB @  18.10.2006,  10:09 Найти цитируемый пост)
1. При перемещении панели кнопок, всё начинает нереально глючить.

Больше не глючит.

Цитата(MaxB @  18.10.2006,  10:09 Найти цитируемый пост)
2. Поработать над дизайном интерфейса, сильно наляписто.

Не придумал, как лучше smile

Цитата(MaxB @  18.10.2006,  10:09 Найти цитируемый пост)
3. Слово "результат" второй раз можно не писать.

Теперь не пишет.


Цитата(bems @  25.10.2006,  03:35 Найти цитируемый пост)
Если же и копировать и вставлять только в твою прогу, то возникает ощущение что есть два буфера - один доступен из меню, другой по комбинации - исправно помнит и то и другое

Убрал второй буфер smile


Цитата(bems @  25.10.2006,  03:55 Найти цитируемый пост)
Делаю Меню-Тригонометрические функции-sin(синус)потомМеню-Гиперболические функции-sinН(синус)и получаю &in( &inh() ) Потом Меню-Константы-pi=...и вижу Invalid class typecastКонстанта е из меню просто меня игнорирует. А если кнопочками на панели, то все работает

Исправил.

Цитата(bems @  25.10.2006,  03:35 Найти цитируемый пост)
ceil(1.00000000000000000000000000000000000000000) =2 ,a ceil(1.0000000000000000000000000000000000000000)=1 

Глюк стандартных функций, будет пофиксено во второй версии.

Цитата(Exception @  25.10.2006,  15:31 Найти цитируемый пост)
0^(-1) = 1/0 по стандарту равняется inf (infinity). Неплохо бы оное реализовать.

Тоже будет во второй версии.


Версию 1.5 можно скачать по тем же ссылкам.

Автор: bems 27.10.2006, 18:07
на makarovcalc.nm.ru все еще версия 1.4
И ты бы текущую версию на странице написал, а то налом получается

Добавлено @ 18:15 
http://systemhalt.jino-net.ru/index.php?request=Calculator тут поврежденный архив

Автор: bems 27.10.2006, 18:27
Цитата(NightmareZ @  27.10.2006,  16:51 Найти цитируемый пост)
Убрал второй буфер 

А слабо при этом оставить контекстное меню? smile 
Содержимое памяти выводится в поле результата (обычно в калькуляторах его можно использовать для дальнейших вычислений) и при этом второй раз выводиться слово "результат"
При подсчете выражения 0+ сообщение "Ошибка: в стеке ничего нет" не-программисту ничего не скажет


Автор: NightmareZ 27.10.2006, 18:28
Цитата(bems @  27.10.2006,  18:07 Найти цитируемый пост)
http://systemhalt.jino-net.ru/index.php?request=Calculator тут поврежденный архив

Ничего он не повреждённый. Поставь свежий WinRAR.

Добавлено @ 18:30 
Цитата(bems @  27.10.2006,  18:27 Найти цитируемый пост)
А слабо при этом оставить контекстное меню?  

Нет конечно. Только зачем оно?


Цитата(bems @  27.10.2006,  18:27 Найти цитируемый пост)
Содержимое памяти выводится в поле результата (обычно в калькуляторах его можно использовать для дальнейших вычислений) и при этом второй раз выводиться слово "результат"

Будет во второй версии smile


Цитата(bems @  27.10.2006,  18:27 Найти цитируемый пост)
При подсчете выражения 0+ сообщение "Ошибка: в стеке ничего нет" не-программисту ничего не скажет

Сообщение говорит о том, что произошла ошибка smile

Автор: bems 27.10.2006, 18:33
Предлагаю объеденить поля для выражения и констатн в одно. Чтобы твоя начальная ситуация выглядела так
Код

alpha = 10
beta = 15
(alpha + 10) ^ (3 * sin(3)) + beta

преимущество - можно сделать так
Код

alpha = 10 + 4.7
beta = alpha * 1.5
(alpha + 10) ^ (3 * sin(3)) + beta


Добавлено @ 18:36 
Цитата(NightmareZ @  27.10.2006,  18:28 Найти цитируемый пост)
Только зачем оно?
тебе виднее. Но везде есть...

Добавлено @ 18:42 
cosh(arccosh(15))=15,0000000000001

Причина то понятна, но это ж очевидный случай. Тут можно и предусмотреть..., ну это так, между прочим...

Добавлено @ 18:46 
0-1+1=-2 в то время как  -1+1=0

Автор: bems 27.10.2006, 18:49
можно добавить разные системы счисления

Добавлено @ 19:00 
хотел переполнить стек, написал 1-1+1-1... и так больше тысячи едениц. До переполнения стека не дошло - после вставки очередной порции поле ввода начало нереально тормозить при простых действиях вроде бекспейса

Автор: bems 27.10.2006, 19:12
Выражение:
а
Константы:
а=-1
Результат:
Ошибка: неправильно задана константа: a=-1

Добавлено @ 19:14 
И почему то тот же результат если константа вообще не используется и ее можно проигнорировать

Выражение:
0
Константы:
а=-1
Результат:
Ошибка: неправильно задана константа: a=-1

Добавлено @ 19:16 
Если ошибка полезно бы было ставить курсор на предполагаемое место ошибки

Добавлено @ 19:23 
.=0

не для юзверя это  smile 

Автор: bems 27.10.2006, 19:28
Код

.8-.+.-8.
  * . *
    .

Картина "БАРАДА". Она равно 0.8 )))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)