MotoFan.Ru — всё для Motorola > Лаборатория > Разработка Java-приложений

Students Calculator - Официальная Поддержка Полная версия
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15

 av 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 за вдохновение и за моральную поддержку.

 av absorbb

 14.3.2005, 6:52

Новая версия 0.55. Изменения:
1. Пришлось отказаться от FullScreen и использовать MIDP1.0. Для совместимости со всеми телефонами. Теперь подписи к софт-клавишам в нижней полоске, что даже в некотором смысле удобнее.
2. Кнопка "Dial" эквивалентна "="
3. У тех мобил, у которых есть кнопка "с" (стереть) она должна работать как DEL.
4. Сделал переключение Градусы / Радианы
5. Возможность вставки полученного ответа в строку ввода.

Теоретически эта версия должна работать на всех телефонах. Тестировалась на е398 и на SE k700. Людей скачавших и установивших очень прошу отписаться: работает ли и на каком телефоне.
Изображение

 av 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 работает но бывает вылетает!!!
*


В каких случаях вылетает? Вылеты возможны при несоблюдении синтаксиса - будте внимательны.

 av 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/.

 av XaTTaB

 15.3.2005, 20:10

замечательно, респект огромный!!! цифры не вылазят за кнопки, увеличен размер шрифта функций - теперь их видно невооруженным глазом ;)

Несколько пожеланий:

- цифры слегка сливаются с фоном :( если их сделать белыми, то клавиатура будет выглядеть контрастнее и цифры не будут сливаться с разделительными линиями
- а нельзя уменьшить индикатор RAD/DEG? уж больно он большой. можно ведь сделать клавиши поуже и повыше, а индикатор сбоку приделать

З.Ы. Дизайн самой первой версии все-таки был лучше
З.З.Ы. При нажатии на джойстик происходит как-бы выделение. Это есть что?

 av DereK

 15.3.2005, 20:30

absorbb,
новая версия класс! Быстродействие действительно улучшено (на моторе и так было ОК, а вот на Сериес60 подтормаживало)!

Да и счиатет ниче так...
единственное что РЕАЛЬНО бесит, это с тангенстами...
например tg X считает правильно, а вот sin X/cos X - уже косячек....
реально при расчетах напрягает только это...а так респект...

 av 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 теперь рассчитываются верно.

В связи с изменениями в алгоритме распознавания строки просьба жестко его оттестировать.

 av XaTTaB

 16.3.2005, 8:57

пробовал по-быстрому в пэйнте перерисовать - не получается белым, только таким же цветом или черным, да и после сохранения файл становится в 5 раз больше

в рабочем шрифте не плохо бы тоже помянять функции, примерно как на клавиатуре, а то уж больно мелкие

А что это за черная полоса вверху? тоже ведь место занимает

В общем и целом - огромный респектище!!!

З.Ы. При делении на 0 выдает: 0tan-10 ;)

 av XaTTaB

 16.3.2005, 14:49

перерисовал кнопки - изменил цвет на белый. Получилось (для меня ) намного лучше. Вот только размер увеличисля :(

З.Ы. Как мессаги удалять? Это тут можно?

 av DereK

 16.3.2005, 18:47

absorbb,
так ты исправил с tan или нет...
в 0.71 все равно тангенс считается как косинус...
например в градусах
sin45/cos45 ~1 ; arctg1=45 - т.е. тангенс посредством других операторов расчитывается верно...
а непосредственно tg45 = 0.707 (на самом деле = 1, это cos45=0.707 )/ :( :(

исправь с тангенсом плиз! и все будет клево!

 av 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. Мессаги я могу удалять как куратор. какую удалить? :)

Просьба жестко оттестирвоать алгоритм распознавания строки (как всегда)

 av JenFA

 16.3.2005, 20:35

absorbb, ушёл тестить :)


Цитата
Мессаги я могу удалять как куратор. какую удалить?


Я уже удалил то сообщение, о котором он просил.

 av DereK

 16.3.2005, 22:09

absorbb,
да с тангенсами полный порядок. Со строкой глюков пока не обнаружил..

пожелание..
хотелось бы чтоб при долгом удержание левого софта (Delete) удалялась вся строка, или по символу но ускоренно...

А вообще 0.73 - уже реальная версия, которую и поюзать не грех, всмысле именно в работе поюзать!
так держать, обалденный мидлет!

 av 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)

Эту версию качать обязательно!

 av pahan_tver

 17.3.2005, 17:28

absorbb,
пока нет возможности установить и "жестко оттестировать" новую версию, но в предыдущих результатом для "55-3-3" было 55, то есть сначало выполнялось второе вычитание, а потом - первое!

 av Zagden

 17.3.2005, 18:02

absorbb,
Firsak полностью прав - в С550 залить кроме как Midway не возможно, а тело пишет - Invalid File
Для присутствующих - P2ktools работает с заливкой Java начиная с модели С650, те с теми телефонами, которые Java хранят по иному нежели старые модели.
Жаль что не могу установить эту прогу...

 av JenFA

 17.3.2005, 18:19

Zagden, когда пишет Invalid File? До или после заливки JAR-а?

 av absorbb

 17.3.2005, 19:06

pahan_tver, именно это я и пофиксил в 0.75

 av pahan_tver

 17.3.2005, 19:29

absorbb,
оттестировал, пока не очень жёстко. Но все работает, полный порядок.

 av Zagden

 17.3.2005, 19:34

JenFA,
Разумеется опосля.
Ну не надо прям так вот! Jad файлы я и сам править умею... ;)

p.s. без обид
off_topic; твой ФМ ведь тоже на нас не рассчитан... Чую пора менять трубу off_topic;
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15

Полная версия:


MotoFan.ru (©) 2024    Слушать Radio