Представляю
Вашему вниманию JAVA калькулятор для студентов. с вводом строки, но не
в режиме 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
Дополнительно:
Джойстик вверх/вниз -
навигация по истории ввода. "Вниз" на первой строке создает новую
строку и затирает верхнюю. "=" не создает в истории ввода новой строки.
Протестирован на:
Motorola E398, V620, C380,
C650
SonyEricsson K700, Т630,
T610
Siemens C65 CX65 (версия для Siemens) , SX1
Nokia 6610i,
N-Gage
Samsung E800
Теоретически должен работать на всех телефонах.
Спасибо:
JenFA
за исходники
File
Manager, которые мне очень помогли, за ценные советы и моральную
поддержку.
Бушевой Марии aka RNqAM за вдохновение и за
моральную поддержку.
Павлу Стриженко aka Proton за самоотверженное
тестирование и продвижение проекта.
Станиславу Дмитриеву aka Stasilok за
обнаружение и устранение глюков с телефонами Siemens.
DOWNLOAD:
MIDP1.0 версия
Students Calculator 1.5.0 PR - рекомендуется для всех мобильных телефонов.
Download: Archive RAR: link1, / JAR file: link1 / JAD file: link1 |
MIDP2.0
версия Students Calculator 1.5.0 PR для Motorola - специальная MIDP2.0 версия
только для телефонов Motorola, дающая возможность
управления функцией подсветки и включения полноэкранного режима.
Download: Archive RAR: link1, / JAR file: link1 / JAD file: link1 |
Комментарии оставлять в форуме или по absorbb@gmail.com
Изменения в версии 1.5.0 PR от 26.03.2006:
1. Использована новая версия класса Real.java с исправленной
ошибкой расчета на некоторых телефонах Siemens и Nokia. Специальная
версия для Siemens теперь не нужна.
2. Исправлен неправильный расчет констант.
Изменения в версии 1.5.0beta4
от 7.01.2006:
1. Теперь можно настроить формат данных для
вычислений в режимах
HEX, OCT, BIN - 1, 2 или 4 байта (Number Format)
2. Исправлены проблемы отрисовки клавиатуры на некоторых телефонах.
3. Мелкие багфиксы.
Изменения в версии 1.5.0beta3 от 1.12.2005:
1. Новый алгоритм распознавания и расчета
строки.
Написан практически с нуля.
2. Исправлены приоритеты побитовых операций - теперь соответствует
принятым в программировании.
3. Значительно ускорен алгоритм
преобразования в дробь. Также повышена
точность преобразования.
4. Новый алгоритм сохранения настроек
и работы с формами настроек.
5. Оптимизация всего кода программы.
6. Мелкие багфиксы.
Изменения в версии 1.5.0beta2 от 25.10.2005:
1. История ввода для каждого из режимов
DEC,HEX,OCT,BIN теперь
своя.
2. Исправлены глюки клавиатуры.
3. Исправлены приоритеты при расчете функций
div, or, and, mod, xor, , >>, <<
Изменения в версии 1.5.0beta1 от 24.10.2005:
1. Добавлена возможность считать в системах
HEX, OCT, BIN! Для этих режимов доступны
новые функции
div, or, and, mod, xor, not, >>, <<
2. Функция ANS to text заменена на
Convert ANS и теперь представляет ответ
сразу во всех форматах (DEC,HEX,OCT,BIN)
3. Добавлена функция Past ANS для
прямой вставки ответа в строку. При этом ответ полученный в другой
системе исчисления преобразуется в текущую.
4. Новые форматы для угловых аргументов - Грады и Длина дуги
5. Оптимизация кода и графики.
6. Небольшие фиксы в алгоритмах распознавания строки.
1. Повторение действия клавиши при удерживании.
Изменения в версии 1.12 от 29.04.2005:
1. Увеличена скорость и повышена
точность алгоритма преобразования ответа в дробь.
2. Теперь если перед дробью стоит символ "Е"
это значит, что результат алгоритма приближённый.
Изменения в версии 1.1 от 27.04.2005:
1. Владельцам телефонов Siemens
теперь доступна полнофункциональная версия программы.
2. Исправлен расчёт корня n-ной
степени (уже в версии 1.07 с 16.04.2005).
Изменения в версии 1.07 от 13.04.2005:
1. В истории ввода теперь
сохраняется 9 строк.
2. В список Constants добавлены ещё 3 константы
3. Небольшая оптимизация алгоритма преобразования в простую
дробь.
Изменения в версии 1.05 от 28.03.2005:
1. Добавлена возможность вставлять основные
физические константы через меню Constants.
2. Добавлена возможность удалять из главного меню ненужные
пункты (Settings).
3. Исправлены мелкие недочеты.
Изменения в версии 1.02 от 26.03.2005:
1. Добавлена возможность преобразования ответа в простую дробь. Алгоритм экспериментальный и достаточно медленный. Надеюсь получится улучшить.
Изменения в версии 1.01 от 24.03.2005:
1. Исправлена незначительная ошибка в алгоритме распознавания строки.
Изменения в версии 1.0 от 22.03.2005:
1. Исправлен глюк с прорисовкой ответа на некоторых телефонах.
Изменения в версии 1.0RC2 от 21.03.2005:
1. Настройки значений кнопок DIAL,
NODIAL, FIRE и формата для угловых аргументов вынесены в пункт
Settings.
2. Добавлена возможность копировать текст в буфер телефона через пункт
ANS to text.
3. Теперь ускорение курсора происходит после 8 повторных нажатий
(раньше было 10)
4. Из-за глюков с рисованием ответа по правому краю на некоторых
телефонах, по умолчанию ответ рисуется по левому. Right align можно
включить в пункте Settings.
5. Исправлены мелкие недочёты.
Изменения в версии 1.0RC1 от 20.03.2005:
1. Добавлен четвертый уровень клавиатуры.
Содержит гиперболические функции, ANS, abs, факториал и
2 пользовательские переменные.
2. Добавлена возможность задавать значения 2ум пользовательским
переменным и использовать их в строке ввода.
3. Настройка формата результата вычислений FIX SCI ENG
и количества разрядов.
4. Ответ рисуется по правому краю.
5. Изменён внешний вид кнопок.
Изменения в версии 0.91 от 20.03.2005:
1. Теперь калькулятор использует класс Real.java от Roar Lauritzsen для расчётов с плавающей запятой. Благодаря этому существенно повышена точность и быстродействие. Точность 16 разрядов.
Изменения в версии 0.90 от 19.03.2005:
1. Учёт нюансов в распознавании строки. Теперь
кажется уже на 100% совпадает с железными аналогами.
2. Улучшена проверка синтаксиса строки.
Изменения в версии 0.89 от 19.03.2005:
1. В истории операций теперь 5 строк.
2. Проверка синтаксиса строки перед расчётом.
3. Новый шрифт для строки ввода.
4. Исправлены мелкие недочёты.
Изменения в версии 0.88 от 18.03.2005:
1. Добавлена история операций! Навигация по
строкам - стрелки вверх, вниз. "Вниз" на первой строке создает новую
строку и затирает верхнюю.
2. Сохранение истории операции и всех настроек при выходе
и восстановление их при последующем запуске.
3. Возможность перенастройки кнопки "DIAL" с "=" на
Delete. Необходимо для тех телефонов, в которых и "=" и delete
доступны только через меню.
4. Исправления в алгоритме расчёта строки. Теперь наиболее приближенно
к аппаратным калькуляторам.
5. Оптимизация алгоритмов прорисовки. Торможение практически исключено.
Изменения в версии 0.75 от 17.03.2005:
1. Исправлены серьёзные ошибки в расчёте
строки, приводившие к неверному ответу в правильно заданной строке.
2. Изменения в алгоритмах распознавания строки. Запись
подобная ln5ln6ln7 теперь считается как
ln5 * ln6 * ln7, как в Casio
и Cityzen
а sinп(2+0.5) как
sinп * (2+0.5)
Изменения в версии 0.73 от 16.03.2005:
1. Полностью дооптимизировал алгоритмы
прорисовки. Теперь практически ни один пиксель лишний раз не
перерисовывается. Что должно положительно сказаться на скорости
отрисовки экрана
2. Изменения в алгоритмах распознавания строки. Теперь
можно считать выражения подобные (2+3)ln3,
(1+2)sin2п.
3. tan теперь рассчитываются верно.
Изменения в версии 0.71 от 16.03.2005:
1. Бортик клавиатуры не сливается с цифрами на
экранах 128х128.
2. Изменения в алгоритмах распознавания строки. Теперь
можно считать (2+3)(3+4).
3. atan теперь рассчитываются верно.
Изменения в версии 0.7 от 15.03.2005:
1. Изменён внешний вид клавиатуры. Более
быстрые алгоритмы прорисовки экрана.
2. Изменения в алгоритмах распознавания строки. Теперь
можно писать следующие выражения:
2ln4,3sin0.5п, 4(2+3), но (2+3)(3+4) нельзя - нужно
(2+3)*(3+4).
3. Уменьшена вероятность вылета от синтаксической ошибки.
Изменения в версии 0.56 от 14.03.2005:
1. Исправлена несовместимость с
SonyEricsson T6xx и наверное Z6xx тоже.
2. Оптимизирована прорисовка.
Изменения в версии 0.55 от 14.03.2005:
1. Пришлось отказаться от FullScreen и
использовать MIDP1.0. Для совместимости со всеми телефонами. Теперь
подписи к софт-клавишам в нижней полоске, что даже в некотором смысле
удобнее.
2. Кнопка "Dial" эквивалентна "="
3. У тех мобил, у которых есть кнопка "с" (стереть) она должна работать
как DEL.
4. Сделал переключение Градусы / Радианы
5. Возможность вставки полученного ответа в строку ввода.