motofan logo
30 страниц V « < 7 8 9 10 11 > »         
> 

Students Calculator - Официальная Поддержка

absorbb
сообщение 13.3.2005, 15:08 Закрепленное сообщение!


Мастер
****

Группа: Пользователи
Сообщений: 239
Регистрация: 16.1.2005
Пользователь №: 34 484

Рейтинг: 129



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 - 8.12.2006, 18:47
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VANDAL1
сообщение 26.3.2005, 4:10


Ветеран
*****

Группа: Пользователи
Сообщений: 426
Регистрация: 24.10.2004
Из: Москвы
Пользователь №: 17 976
Модель телефона: htc pharos 3470
Прошивка: the one

Рейтинг: 177



а вот всетаки сделай дроби! Не всегда знаком здоровую дробь можно заменить на / ! На моем саром casio так было можно (пока его не посеял :( )
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
absorbb
сообщение 26.3.2005, 5:40


Мастер
****

Группа: Пользователи
Сообщений: 239
Регистрация: 16.1.2005
Пользователь №: 34 484

Рейтинг: 129



VANDAL1, заменить можно всегда если заключать в скобки т.е. так ln((2+4)/(34-1)) и никогда если не заключать.
Дроби нужны школьникам которые складывают и умножают дроби с целью получить ответ в дробях. Если же ответ в дробях выводиться не будет, то смысла от них нет. Хрен знает короче если напишу алгоритм преобразования десятичной дроби....
Ну только тогда придется вставить вместо какой-то функции из 4ого уровня.
Dimka,
1. Пришли мне плиз свой список констант. Хотя это реализовать непросто.
2. В строковых калькуляторах не видел такой функции да и непонятно как её реализовывать ваще. Напомню, что 100%==1
3. Реально, но зачем это нужно в калькуляторе, может кто объяснит? Будет наверно в Extended, тк сами понямаете, что для ввода 16ых придется переделывать всю клаву :(
4. Можно, но опять вместо функции из 4ого уровня, но зачем??? Где это применяется?
5. Статистики не будет, тк я ваще мало понимаю о чём речь идет :-/
6. Если осилю алгоритм преобразования в дробь и будет время постараюсь их реализовать.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
absorbb
сообщение 26.3.2005, 15:45


Мастер
****

Группа: Пользователи
Сообщений: 239
Регистрация: 16.1.2005
Пользователь №: 34 484

Рейтинг: 129



Новая версия Students Calculator 1.02!
Изменения в версии 1.02 от 26.03.2005:

1. Добавлена возможность преобразования ответа в простую дробь. (ANS to a/b/c) Алгоритм экспериментальный и достаточно медленный. Надеюсь получится улучшить.

Теперь можно использовать его для расчета дробей. Только дроби придется писать так: (2/3) или (16+4/5) если есть целая часть. А потом преобразовывать ответ в дробь. К сожалению в текущий алгоритм символ стулчика для дробей оказалось добавить очень сложно, но надеюсь того что сделал должно хватить.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VANDAL1
сообщение 26.3.2005, 16:00


Ветеран
*****

Группа: Пользователи
Сообщений: 426
Регистрация: 24.10.2004
Из: Москвы
Пользователь №: 17 976
Модель телефона: htc pharos 3470
Прошивка: the one

Рейтинг: 177



ура и еще раз ура!!!

p.s. на чем пишешь калк и как научился! Заранее спасибо!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
absorbb
сообщение 26.3.2005, 16:36


Мастер
****

Группа: Пользователи
Сообщений: 239
Регистрация: 16.1.2005
Пользователь №: 34 484

Рейтинг: 129



VANDAL1,
Я ещё сделал чтобы ответ покрасивее рисовался. Можете перекачать.
Меня всегда очень прикалывает, когда спрашивают на чем я написал JAVA Calculator для мобил :)
Ты не первый кстати, далеко не первый.
Основы программирования на разных языках у меня были уже и (С++ в том числе)
а JAVA научился по исходникам FM. Тем более что JAVA это упрощённый С++, в котором все написали уже за тебя.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Dimka
сообщение 26.3.2005, 20:11


МотоКовырятель
******

Группа: Разработчики
Сообщений: 707
Регистрация: 21.3.2005
Из: Волгоград
Пользователь №: 39 255
Модель телефона: Moto X, Defy, ZN5, E2

Рейтинг: 1029



absorbb, я просто раньше очень увлекался калками и очень хорошо их изучал.
1. Для работы с дробями нужно использовать аппроксимацию простой дроби. У меня, где то был алгоритм. Если найду его то скину. А так сейчас его уже не помню.
2. Константы: с=299792458; g=9.80665; G=6.6725985E-11; Vm=0.0224141; Na=6.022136736E23; e=1.602177335E-19; me=9.109389754E-31; mp=1.67262311E-27; h=6.62607554E-34; k=1.38065812E-23. Что это за константы думаю не надо объяснять. Сам знаешь. :) А почему сложно реализовать? Сложно ручками вбить несколько констант в прогу? ;)
3. Рэндом и проценты можно и не добавлять, т.к. они не нужны, но во всех формульных калках они есть.
4. Статистику можно сделать через меню отдельным модулем. Это типа вводишь кучу чисел (придется их в массив загонять), а потом калк выдает их сумма, среднее арифмитическое, геометрическое, сумма квадратов чисел. Короче это очень просто на мой взгляд.
5. А системы исчисления очень нужны. Можно их сделать тоже отдельным модулем через меню.
У меня в калке так сделано. Есть меню, в котором выбираешь: основной режим работы; статистика; системы исчисления; работа с комплексными числами; решения систем линейных уравнения (Можно добавить кстати. Очень просто считается по формулам Крамера); и решение квадратного уравнения (совсем просто сделать).
Ну это все предложения. А делать или нет, сам решай. Все равно твой калк на Яве ЛУЧШИЙ!!! :)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
absorbb
сообщение 26.3.2005, 21:09


Мастер
****

Группа: Пользователи
Сообщений: 239
Регистрация: 16.1.2005
Пользователь №: 34 484

Рейтинг: 129



Dimka,
1. Было бы неплохо если найдешь. Так как тот алгоритм что ща - я сам накатал. Но если не найдешь нестрашно. Я в понедеьник спрошу про это у препода по матану. Он программированием для математики не в шутку увлекается.
2. Сложность зависит от способа добавления. Ну да не очень сложно впринципе
3, 4, 5. Если толкьо в Extended в этом точно не будет.
Ваще над Extended нада долго думать. Сложно реализовать все это и сохранить удобный и интуитивно понятный интерфейс.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
IvenGo
сообщение 27.3.2005, 11:04


Новичок
*

Группа: Пользователи
Сообщений: 27
Регистрация: 27.11.2004
Из: Армавир Краснодарского края
Пользователь №: 23 334
Модель телефона: Motorola с380
Прошивка: R_365_G_0B.D2.23R

Рейтинг: 0



absorbb, я первый раз увидел что на с380 наконец потухла подсветка когда я нетрогал клаву в течение 5 секунд. ;) . Как ты это осуществил? Я хочу чтобы и в других приложениях была такая возможность. Сложно ли это сделать?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
absorbb
сообщение 27.3.2005, 11:10


Мастер
****

Группа: Пользователи
Сообщений: 239
Регистрация: 16.1.2005
Пользователь №: 34 484

Рейтинг: 129



IvenGo, функция flashBacklight(время в милисикундах) для объекта Display. Прикол в том что вообще-то это не совсем функция включения подсветки. И каждый тел её по своему понимает. Моторола просто зажигает подсветку а Сониериксон например мигает. В понедельник на сименсах проверю. Поэтому я и не выкладываю MIDP2.0 версию в массы. Но если только для Моторол то наура.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Dimka
сообщение 27.3.2005, 19:28


МотоКовырятель
******

Группа: Разработчики
Сообщений: 707
Регистрация: 21.3.2005
Из: Волгоград
Пользователь №: 39 255
Модель телефона: Moto X, Defy, ZN5, E2

Рейтинг: 1029



absorbb, у меня есть еще несколько замечаний и предложений:
1.У тебя программа сейчас переводит в дробь не точно, а приближенно. Это очень плохо. Она выдает дробь, ты думаешь, что это правильный ответ, а на самом деле может быть приближенный. Лучше, если точного соответствия прога не находит, выдавать ответ десятичной дробью. Сделай пожалуйста.
2. У меня в калке есть одна функция, которой я очень часто пользуюсь. Одна ячейка, называемая PROG может хранить не только число, но и формулу. При чем можно использовать переменные, типа X, Y. И когда такую формулу, загруженную из этой ячейки, запустить, то калк не сразу считает значение выражения, а спрашивает значения переменных, которые ты использовал и потом считает значение выражения с учетом данных, которые ты ввел. Например, считаю я лабу. В ней есть одна формула, по которой я считаю 20 раз, но с разными данными. Ввожу формулу, запускаю, ввожу значения и получаю ответ. Опять ввожу – ответ. Очень полезная функция. Если реально, замути. ;)
3. Я разобрался, как строить графики в calculator. Там все просто, не знаю, почему раньше не получалось… Советую тебе тоже на тел поставить, может какие мысли возьмешь от туда. Или даже куски кода, если можно хорошо дизассемблировать. Надо создать одну запись, в которую написать типа: f(x)=x*x. Проверить ее, нажав EVALUATE. И еще одну, в которую написать: plot(ОТ,ДО,f). ОТ – это минимальное значение по оси x, а ДО – максимальное. И опять нажать EVALUATE.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Students Calculator - Официальная Поддержка · Разработка Java-приложений · Forum
 

30 страниц V « < 7 8 9 10 11 > » 
Ответ в темуСоздание новой темы
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 27.4.2024, 12:06

Форум живёт: