Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Основной форум

Основной форум Сюда все проблемы связанные с программированием.

Ответ
 
Опции темы
Старый 21.03.2010, 21:11   #1
GRAY_WOLF
Разработчик
 
Аватар для GRAY_WOLF
 
Регистрация: 16.08.2008
Адрес: Нижегородская провинция
Сообщений: 389
Написано 48 полезных сообщений
(для 93 пользователей)
Математика в МР.

В справке не нашел, как извлечь из числа корень "n"- ой степени. Это возможно?
__________________
- Это мы накодили WINDOWS,
- Это мы надкусили APPLE,
- Нам играют живые The Beatles
- И нестареющий Вова Высоцкий...

Последний раз редактировалось GRAY_WOLF, 21.03.2010 в 22:12.
(Offline)
 
Ответить с цитированием
Старый 21.03.2010, 22:41   #2
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Математика в МР.

Корень n степени из числа k есть число k в степени 1/n.
Если нет никаких глюков, должна сработать функция Pow, т.е. x:=pow(k,1/n).
(Offline)
 
Ответить с цитированием
Старый 21.03.2010, 23:36   #3
GRAY_WOLF
Разработчик
 
Аватар для GRAY_WOLF
 
Регистрация: 16.08.2008
Адрес: Нижегородская провинция
Сообщений: 389
Написано 48 полезных сообщений
(для 93 пользователей)
Ответ: Математика в МР.

Сообщение от ViNT Посмотреть сообщение
Корень n степени из числа k есть число k в степени 1/n.
Если нет никаких глюков, должна сработать функция Pow, т.е. x:=pow(k,1/n).
По идее x:=pow(3125,1/5); должно быть 5 , т.к. 5 ^ 5 = 3125, а в ответе 1 при любых значениях.
var xreal;
Begin
x
:=pow(3125,1/5);
    
DrawText(''+x00);
    
Repaint;    
    
Delay(5000);
End
__________________
- Это мы накодили WINDOWS,
- Это мы надкусили APPLE,
- Нам играют живые The Beatles
- И нестареющий Вова Высоцкий...
(Offline)
 
Ответить с цитированием
Старый 21.03.2010, 23:40   #4
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Математика в МР.

Видимо, функция pow криво реализована.
Тогда нужно использовать такую формулу, с ней должно сработать: X^Y = exp(ln(X) * Y)
(Offline)
 
Ответить с цитированием
Старый 22.03.2010, 00:00   #5
GRAY_WOLF
Разработчик
 
Аватар для GRAY_WOLF
 
Регистрация: 16.08.2008
Адрес: Нижегородская провинция
Сообщений: 389
Написано 48 полезных сообщений
(для 93 пользователей)
Ответ: Математика в МР.

Сообщение от ViNT Посмотреть сообщение
Видимо, функция pow криво реализована.
Тогда нужно использовать такую формулу, с ней должно сработать: X^Y = exp(ln(X) * Y)
Так с возведением целых чисел проблем нет.
Есть хороший материал по этой теме пожалуйста сделай библиотеку математических функций. А то в Lib_dbl нет таких функций, на форуме она старая.
Вложения
Тип файла: zip real-java-1.13.zip (830.0 Кб, 609 просмотров)
__________________
- Это мы накодили WINDOWS,
- Это мы надкусили APPLE,
- Нам играют живые The Beatles
- И нестареющий Вова Высоцкий...
(Offline)
 
Ответить с цитированием
Старый 22.03.2010, 00:40   #6
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Математика в МР.

Библиотеку пока написать не могу, времени нет совсем.
Могу предложить такую функцию (для целых чисел):
function root(a:integer;n:Integer):real;
var 
rreal;
begin
 r
:=exp(log(abs(a))/n); 
 if 
a<0 then root:=-else root:=r
end

Переписал для вещественных:
function root(a:real;n:real):real;
var 
rreal;
begin
 
if a<0 then a:=-a;
 
r:=exp(log(a)/n);            
 if 
a<0 then root:=-else root:=r  
end


Последний раз редактировалось ViNT, 22.03.2010 в 11:06.
(Offline)
 
Ответить с цитированием
Старый 22.03.2010, 11:59   #7
Bruteo
ПроЭктировщик
 
Регистрация: 31.01.2007
Сообщений: 128
Написано 20 полезных сообщений
(для 43 пользователей)
Ответ: Математика в МР.

Сообщение от GRAY_WOLF Посмотреть сообщение
По идее x:=pow(3125,1/5); должно быть 5 , т.к. 5 ^ 5 = 3125, а в ответе 1 при любых значениях.
Возможно, дело в использовании режима Floating point, который не на всех телефонах даёт правильные результаты при расчётах.
(Offline)
 
Ответить с цитированием
Старый 22.03.2010, 12:02   #8
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Математика в МР.

1/5=0
1/5.0 не?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
GRAY_WOLF (22.03.2010), Phantom (25.12.2010), ViNT (22.03.2010)
Старый 22.03.2010, 12:39   #9
GRAY_WOLF
Разработчик
 
Аватар для GRAY_WOLF
 
Регистрация: 16.08.2008
Адрес: Нижегородская провинция
Сообщений: 389
Написано 48 полезных сообщений
(для 93 пользователей)
Ответ: Математика в МР.

Сообщение от Bruteo Посмотреть сообщение
Возможно, дело в использовании режима Floating point, который не на всех телефонах даёт правильные результаты при расчётах.
Проверял только на эмуляторе КЕ.
__________________
- Это мы накодили WINDOWS,
- Это мы надкусили APPLE,
- Нам играют живые The Beatles
- И нестареющий Вова Высоцкий...
(Offline)
 
Ответить с цитированием
Старый 22.03.2010, 19:57   #10
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Математика в МР.

Сообщение от impersonalis Посмотреть сообщение
1/5=0
1/5.0 не?
Да, как ни странно, в MP все не как в паскале, и там действительно 1/5=0.
И нафига это сделано, там и так есть div для целочисленого деления.
(Offline)
 
Ответить с цитированием
Старый 25.12.2010, 01:11   #11
GRAY_WOLF
Разработчик
 
Аватар для GRAY_WOLF
 
Регистрация: 16.08.2008
Адрес: Нижегородская провинция
Сообщений: 389
Написано 48 полезных сообщений
(для 93 пользователей)
Ответ: Математика в МР.

помогите разобраться с http://forum.boolean.name/showthread.php?t=12895
если вводишь число с запятой, то получается результат "0"...
__________________
- Это мы накодили WINDOWS,
- Это мы надкусили APPLE,
- Нам играют живые The Beatles
- И нестареющий Вова Высоцкий...
(Offline)
 
Ответить с цитированием
Старый 25.12.2010, 10:58   #12
Banan
Нуждающийся
 
Регистрация: 03.10.2008
Сообщений: 61
Написано 13 полезных сообщений
(для 44 пользователей)
Ответ: Математика в МР.

если вводишь число с запятой, то получается результат "0"...
ну правильно, я делал только под целые числа. Но есть исходник, можно легко доработать и под дробные
(Offline)
 
Ответить с цитированием
Старый 25.12.2010, 14:47   #13
GRAY_WOLF
Разработчик
 
Аватар для GRAY_WOLF
 
Регистрация: 16.08.2008
Адрес: Нижегородская провинция
Сообщений: 389
Написано 48 полезных сообщений
(для 93 пользователей)
Ответ: Математика в МР.

Вот если б я знал как это сделать, то и не задавал такой вопрос. На примере можно пояснить?
__________________
- Это мы накодили WINDOWS,
- Это мы надкусили APPLE,
- Нам играют живые The Beatles
- И нестареющий Вова Высоцкий...
(Offline)
 
Ответить с цитированием
Старый 25.12.2010, 23:40   #14
Igor
Мастер
 
Аватар для Igor
 
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений
(для 790 пользователей)
Ответ: Математика в МР.

var a:real;
...a:=1;
a:=a/5; вроде должно работать.
И ещё косяк - если создать, например, константу pi=3.1415 то в результате pi может оказаться другим, потому мне приходилось создавать переменную pi, а потом присваивать это значение.
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
(Offline)
 
Ответить с цитированием
Старый 26.12.2010, 15:45   #15
cherepets
Бывалый
 
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений
(для 215 пользователей)
Ответ: Математика в МР.

У меня с математикой тоже забавный глюк есть и хз как его обойти.
for i:=1 to 10 do
if 
textwidth(names[i])>long then long:=textwidth(names[i]); 
Есть массив имён (10 штук). Надо в переменную long забить самую большую длину имени в пикселях.
Прикол в том, что textwidth(names[i])>long ВСЕГДА ВЕРНО!

Вывожу значения прямо перед проверкой, вижу:
textwidth = 8, long = 15.
Но результат сравнения прежний: (textwidth>long).

Какие есть идеи обхода этой засады?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 21:56.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com