absorbb
13.3.2005, 15:08
http://calc.motofan.ru/
Долго я искал в инете достойный инженерный калькулятор, но все что находил было крайне неудобно.
это либо mjCalculator с ужасной системой ввода и расчёта
либо строковые калькуляторы, но с вводом в режиме tap.
На обоих типах считать практически нереально - время ввода превышает в разы таковое на реальных калькуляторах.
Моё терпение лопнуло и я решил сам написать калькулятор для студентов. с вводом строки, но не в режиме tap, а с клавиатуры.
Проблема с малым кол-вом кнопок была рещена делением клавы на уровни:
1ый уровень: цифры и "."
2ой уровень: sin, cos, tan, *, /, +, -, (, ), квадрат, корень квадратный
3ий уровень: asin, acos, atan, ln, log, e в степени x, (-), 10 в степени x, π, x в степени y, корень n-ной степени.
4ый уровень: sh, ch, th, ash, ach, ath, ANS (вставка ответа в строку), abs, факториал, X,Y (переменные задаваемые пользователем)
Уровни переключаются #.
Проверено, что скорость ввода на нем почти не уступает обычным калькуляторам. Максимум для введения оператора потребуется 4 раза нажать кнопку, а т.к. большинство нажатий приходится на числа, то в среднем получится около 1ого нажатия :)
Точность 16 разрядов. Для расчетов чисел с плавающей точкой применяется класс Real.java от Roar Lauritzsen.
Калькулятор написан под MIDP1.0 и CLDC1.0
Дополнительно:
1. В калькуляторе сохраняется история ввода из девяти строк.
2. Имеется возможность задавать 2 пользовательские переменные и использовать их в строке ввода.
3. Возможность считать в системах HEX, OCT, BIN! Для этих режимов доступны дополнительные функции div, or, and, mod, xor, not, >>, <<.
(версия 1.5.0)
4. Настройка формата угловых аргументов (градусы/радианы/грады/длина дуги) через меню Settings.
5. Настройка формата вывода ответа (Number Format): FIX, SCI, ENG и количества разрядов.
6. Возможность переназначения клавиш DIAL, FIRE, NODIAL(только для некоторых телефонов) через меню Settings.
7. Для перевода текста в любой формат и для копирования его в буфер обмена (на телефонах поддерживающих это) функция (Convert ANS).
8. Возможность преобразования ответа в простую дробь (ANS to a/b). Алгоритм приближённый. В случае если подобрать дробь точно не удаётся перед результатом ставится символ "Е".
9. История ввода и все настройки сохраняются при выходе.
10. Возможность вставлять основные физические константы через меню Constants. (константы заданы в системе SI)
Протестирован на:
Motorola E398, V620, C380, C650
SonyEricsson K700, Т630, T610
Siemens C65 CX65 (версия для Siemens) , SX1
Nokia 6610i, N-Gage
Samsung E800
Теоретически должен работать на всех телефонах.
TODO:
1. Переделка расчетов в системах, отличных от десятеричной. В текущей много багов.
2. Поддержка локализации
3. Поддержка крупных шрифтов
4. Улучшенные меню
5. Улучшенная поддержка MIDP2.0 (не только для Моторол LTE)
6. Багфиксы
7. Оптимизация кода и предоставление исходников в свободный доступ.
Спасибо:
JenFa за исходики FM, которые мне очень помогли, за ценные советы и моральную поддержку.
Бушевой Марии aka RNqAM за вдохновение и за моральную поддержку.
absorbb
14.3.2005, 6:52
Новая версия 0.55. Изменения:
1. Пришлось отказаться от FullScreen и использовать MIDP1.0. Для совместимости со всеми телефонами. Теперь подписи к софт-клавишам в нижней полоске, что даже в некотором смысле удобнее.
2. Кнопка "Dial" эквивалентна "="
3. У тех мобил, у которых есть кнопка "с" (стереть) она должна работать как DEL.
4. Сделал переключение Градусы / Радианы
5. Возможность вставки полученного ответа в строку ввода.
Теоретически эта версия должна работать на всех телефонах. Тестировалась на е398 и на SE k700. Людей скачавших и установивших очень прошу отписаться: работает ли и на каком телефоне.
absorbb
14.3.2005, 19:43
DereK,
Цитата
например поробуйте корень 2 степени (не квадратный) из четырех
или например 3() и "равно"
Что касается корня, то это не моя вина: класс Henson.Float так считает, а его не я писал. Не зря ведь называется Students Calculator - а для студента 3ех знаков после запятой вполне хватает.
Что касается 3(), то в этом калькуляторе не допускается писать:
2ln4,3sin90... надо 2*ln4, 3*sin90 и 3*(...)
ну и пустые скобики тоже незачем писать :)
Цитата
надписи на кнопках надо и вправду сделать гораздо больше!
Сделаю в среду наверное.
Цитата(firsak @ Понедельник, 14 Марта 2005, 21:13)
А что, можно чем то кроме midway ставить?
Попробуй через P2KTools последней версии.
Цитата(Lunar @ Понедельник, 14 Марта 2005, 22:12)
c380 работает но бывает вылетает!!!
В каких случаях вылетает? Вылеты возможны при несоблюдении синтаксиса - будте внимательны.
absorbb
15.3.2005, 15:58
Новая версия 0.7!
Изменения в версии 0.7 от 15.03.2005:
1. Изменён внешний вид клавиатуры. Более быстрые алгоритмы прорисовки экрана.
2. Изменения в алгоритмах распознавания строки. Теперь можно писать следующие выражения:
2ln4,3sin0.5п, 4(2+3),... , но (2+3)(3+4) нельзя - нужно (2+3)*(3+4).
3. Уменьшена вероятность вылета от синтаксической ошибки (возможно даже до 0 :) )
В связи с серьёзными изменениями как в графической так и математической части калькулятора прошу более жёстко его тестировать на предмет неправильной отрисовки экрана и неверного распознавания строки.
![Изображение](http://mpegrom.wallst.ru/calc/calc.gif)
Качать из подписи или с офсайта
http://mpegrom.wallst.ru/calc/.
XaTTaB
15.3.2005, 20:10
замечательно, респект огромный!!! цифры не вылазят за кнопки, увеличен размер шрифта функций - теперь их видно невооруженным глазом ;)
Несколько пожеланий:
- цифры слегка сливаются с фоном :( если их сделать белыми, то клавиатура будет выглядеть контрастнее и цифры не будут сливаться с разделительными линиями
- а нельзя уменьшить индикатор RAD/DEG? уж больно он большой. можно ведь сделать клавиши поуже и повыше, а индикатор сбоку приделать
З.Ы. Дизайн самой первой версии все-таки был лучше
З.З.Ы. При нажатии на джойстик происходит как-бы выделение. Это есть что?
DereK
15.3.2005, 20:30
absorbb,
новая версия класс! Быстродействие действительно улучшено (на моторе и так было ОК, а вот на Сериес60 подтормаживало)!
Да и счиатет ниче так...
единственное что РЕАЛЬНО бесит, это с тангенстами...
например tg X считает правильно, а вот sin X/cos X - уже косячек....
реально при расчетах напрягает только это...а так респект...
absorbb
16.3.2005, 4:55
DereK,
наборот tan считал неправильно, а sin/cos верно.
да простят мне мою невнимательность, но tan у меня считался как cos.
Исправил и перезалил.
Xattab,
Цитата
- цифры слегка сливаются с фоном :( если их сделать белыми, то клавиатура будет выглядеть контрастнее и цифры не будут сливаться с разделительными линиями
- а нельзя уменьшить индикатор RAD/DEG? уж больно он большой. можно ведь сделать клавиши поуже и повыше, а индикатор сбоку приделать
- имхо мне нравится так. попробуй сам вынуть из jar все вайлы p..png исправить их на белый и обратно кинуть. Если будет ништяк, то сможешь в каждую новую версию так кидать. Если будет намного круче скажи - и я сделаю.
Сделал черный бортик - качайте.
-я уменьшу полоску на которой он находится. Сбоку делать не хочу. Тем более что скоро рядом с ним ещё парочка индикаторов появятся.
Новая версия 0.71!
Изменения в версии 0.71 от 16.03.2005:
1. Бортик клавиатуры не сливается с цифрами на экранах 128х128.
2. Изменения в алгоритмах распознавания строки. Теперь можно считать (2+3)(3+4). Уже кажется все можно считать.
3. tan и atan теперь рассчитываются верно.
В связи с изменениями в алгоритме распознавания строки просьба жестко его оттестировать.
XaTTaB
16.3.2005, 8:57
пробовал по-быстрому в пэйнте перерисовать - не получается белым, только таким же цветом или черным, да и после сохранения файл становится в 5 раз больше
в рабочем шрифте не плохо бы тоже помянять функции, примерно как на клавиатуре, а то уж больно мелкие
А что это за черная полоса вверху? тоже ведь место занимает
В общем и целом - огромный респектище!!!
З.Ы. При делении на 0 выдает: 0tan-10 ;)
XaTTaB
16.3.2005, 14:49
перерисовал кнопки - изменил цвет на белый. Получилось (для меня ) намного лучше. Вот только размер увеличисля :(
З.Ы. Как мессаги удалять? Это тут можно?
DereK
16.3.2005, 18:47
absorbb,
так ты исправил с tan или нет...
в 0.71 все равно тангенс считается как косинус...
например в градусах
sin45/cos45 ~1 ; arctg1=45 - т.е. тангенс посредством других операторов расчитывается верно...
а непосредственно tg45 = 0.707 (на самом деле = 1, это cos45=0.707 )/ :( :(
исправь с тангенсом плиз! и все будет клево!
absorbb
16.3.2005, 19:12
Новая версия 0.73!
Изменения в версии 0.73 от 16.03.2005:
1. Полностью дооптимизировал алгоритмы прорисовки. Теперь практически ни один пиксель лишний раз не перерисовывается. Что должно положительно сказаться на скорости отрисовки экрана
2. Изменения в алгоритмах распознавания строки. Теперь можно считать выражения подобные (2+3)ln3, (1+2)sin2п.
3. tan теперь рассчитываются верно.
DereK, сорри. в 0.71 исправил только для радианов. в этой же полностью исправил :)
Xattab,
Цитата
в рабочем шрифте не плохо бы тоже помянять функции, примерно как на клавиатуре, а то уж больно мелкие
А что это за черная полоса вверху? тоже ведь место занимает
З.Ы. При делении на 0 выдает: 0tan-10 ;)
1. не получится. каждая функция должна занимать один символ. Да и это удобнее т.к. больше влезает в строку. А понять можно.
2. В этой строке появляются стрелки в углах, указывающие на то, что строку можно скролить в какаю-либо сторону.
3. Это слово NaN написанное шрифтом, в котором нету букв :). Исправил на ERR.
4. Мессаги я могу удалять как куратор. какую удалить? :)
Просьба жестко оттестирвоать алгоритм распознавания строки (как всегда)
JenFA
16.3.2005, 20:35
absorbb, ушёл тестить :)
Цитата
Мессаги я могу удалять как куратор. какую удалить?
Я уже удалил то сообщение, о котором он просил.
DereK
16.3.2005, 22:09
absorbb,
да с тангенсами полный порядок. Со строкой глюков пока не обнаружил..
пожелание..
хотелось бы чтоб при долгом удержание левого софта (Delete) удалялась вся строка, или по символу но ускоренно...
А вообще 0.73 - уже реальная версия, которую и поюзать не грех, всмысле именно в работе поюзать!
так держать, обалденный мидлет!
absorbb
17.3.2005, 16:39
Новая версия 0.75!
Изменения в версии 0.75 от 17.03.2005:
1. Исправлены серьёзные ошибки в расчёте строки, приводившие к неверному ответу в правильно заданной строке.
2. Изменения в алгоритмах распознавания строки. Запись подобная ln5ln6ln7 теперь считается как ln5 * ln6 * ln7, как в Casio и Cityzen
а sinп(2+0.5) как sinп * (2+0.5)
Эту версию качать обязательно!
pahan_tver
17.3.2005, 17:28
absorbb,
пока нет возможности установить и "жестко оттестировать" новую версию, но в предыдущих результатом для "55-3-3" было 55, то есть сначало выполнялось второе вычитание, а потом - первое!
Zagden
17.3.2005, 18:02
absorbb,
Firsak полностью прав - в С550 залить кроме как Midway не возможно, а тело пишет - Invalid File
Для присутствующих - P2ktools работает с заливкой Java начиная с модели С650, те с теми телефонами, которые Java хранят по иному нежели старые модели.
Жаль что не могу установить эту прогу...
JenFA
17.3.2005, 18:19
Zagden, когда пишет Invalid File? До или после заливки JAR-а?
absorbb
17.3.2005, 19:06
pahan_tver, именно это я и пофиксил в 0.75
pahan_tver
17.3.2005, 19:29
absorbb,
оттестировал, пока не очень жёстко. Но все работает, полный порядок.
Zagden
17.3.2005, 19:34
JenFA,
Разумеется опосля.
Ну не надо прям так вот! Jad файлы я и сам править умею... ;)
p.s. без обид
off_topic; твой ФМ ведь тоже на нас не рассчитан... Чую пора менять трубу off_topic;