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

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

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

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

Ответ
 
Опции темы
Старый 20.06.2011, 16:29   #1
Valery_s
AnyKey`щик
 
Регистрация: 20.06.2011
Сообщений: 12
Написано 0 полезных сообщений
(для 0 пользователей)
Прошу помочь!!!

Нужна программа для расчета положения солнца. Вот что наваял. Но нужна точность 7 знаков после запятой. Как выкрутится?

program NewProject1;
var a,a1,a2,a3,b,b1,b2,b3,c,c1,c2,d,d1,d2,e,e1,f,f1,f2 ,g,g1,k,tc,dal,b00,t00,sin1,sin2,sin3,sin4,tg1,tg2 ,tg3,tg4,cos1,cos2,cos3,cos4: real;

var a11,a22,a33,b11,b22,b33,c11,c22,d11,d22,e11,f11,f2 2,g11,k11,tc11,label_id1,label_id2,label_id3:integ er;
ok:command;
begin

ShowForm;
ok:=createCommand('Ок',CM_OK,1);
a11:=formAddTextField('Широта в градусах','',20,TF_NUMERIC);
a22:=formAddTextField('Широта в минутах','',20,TF_NUMERIC);
a33:=formAddTextField('Широта в секундах','',20,TF_NUMERIC);
addCommand(ok);
delay(500);
repeat until getClickedCommand=ok;
a1:= StringToReal(FormGetText(a11),10);
a2:= StringToReal(FormGetText(a22),10);
a3:= StringToReal(FormGetText(a33),10);
a:=((a3/60)+a2)/60+a1;
ClearForm;
b11:=formAddTextField('Долгота в градусах','',20,TF_NUMERIC);
b22:=formAddTextField('Долгота в минутах','',20,TF_NUMERIC);
b33:=formAddTextField('Долгота в секундах','',20,TF_NUMERIC);
addCommand(ok);
delay(500);
repeat until getClickedCommand=ok;
b1:= StringToReal(FormGetText(b11),10);
b2:= StringToReal(FormGetText(b22),10);
b3:= StringToReal(FormGetText(b33),10);
b:=((b3/60)+b2)/60+b1;
ClearForm;
c11:=formAddTextField('Время, часов','',20,TF_NUMERIC);
c22:=formAddTextField('Время, минут','',20,TF_NUMERIC);
addCommand(ok);
delay(500);
repeat until getClickedCommand=ok;
c1:= StringToReal(FormGetText(c11),10);
c2:= StringToReal(FormGetText(c22),10);
c:= (c2/60)+c1;
ClearForm;
d11:=formAddTextField('b0 градусов','',20,TF_NUMERIC);
d22:=formAddTextField('b0 минут','',20,TF_ANY);
addCommand(ok);
delay(500);
repeat until getClickedCommand=ok;
d1:= StringToReal(FormGetText(d11),10);
d2:= StringToReal(FormGetText(d22),10);
d:= (d2/60)+d1;
ClearForm;
e11:=formAddTextField('^b0 минут','',20,TF_ANY);
addCommand(ok);
delay(500);
repeat until getClickedCommand=ok;
e1:= StringToReal(FormGetText(e11),10);
e:= e1/60;
ClearForm;
f11:=formAddTextField('t0 градусов','',20,TF_NUMERIC);
f22:=formAddTextField('t0 минут','',20,TF_ANY);
addCommand(ok);
delay(500);
repeat until getClickedCommand=ok;
f1:= StringToReal(FormGetText(f11),10);
f2:= StringToReal(FormGetText(f22),10);
f:= (f2/60)+f1;
ClearForm;
g11:=formAddTextField('^t0 минут','',20,TF_ANY);
addCommand(ok);
delay(500);
repeat until getClickedCommand=ok;
g1:= StringToReal(FormGetText(g11),10);
g:= g1/60;
ClearForm;
k11:=formAddTextField('Коэффициент К','',20,TF_ANY);
tc11:=formAddTextField('Tc(весеннее и летнее время=1)','',20,TF_NUMERIC);
addCommand(ok);
delay(500);
repeat until getClickedCommand=ok;
k:= StringToReal(FormGetText(k11),10);
tc:= StringToReal(FormGetText(tc11),10);
ClearForm;
dal:=(c-tc)+k;
b00:= d+dal*e;
t00:=f+dal*g+15*(c-tc)+b;
sin1:= sin(toRadians(t00));
tg1:= tan(toRadians(a));
cos1:= cos(toRadians(t00));
tg2:= tan(toRadians(b00));
cos2:= cos(toRadians(a));
tg3:= sin1/((tg1*cos1-tg2)*cos2);
tg4:= atan(tg3)*180/pi;
label_id1 := formAddString('b='+b00);
label_id2 := formAddString('t='+t00);
label_id3 := formAddString('tga='+tg4);
delay(50000);

end.

Прошу ПОМОГИТЕ!!!!!!
(Offline)
 
Ответить с цитированием
Старый 20.06.2011, 18:32   #2
nil0q
ПроЭктировщик
 
Аватар для nil0q
 
Регистрация: 30.06.2009
Адрес: Челябинская обл.
Сообщений: 111
Написано 32 полезных сообщений
(для 99 пользователей)
Ответ: Прошу помочь!!!

Поставить в свойствах проекта Real Numbers: Floating point. Будет использоваться формат с плавающей точкой, точность у него где-то 17 знаков.

Кстати, в хелпе написано:
Вещественный тип (real) представляет нецелые числа (десятичные дроби). Мобильные устройства не имеют аппаратной поддержки операций с реальными числами, потому MIDletPascal реализует программную эмуляцию.
Реально не поддерживают? А почему тогда сложение целых переменных выполняется 40-50 нс, а дробных всего около 70 нс?
__________________
Аинéжарбази овокáсьф имятнэ́меле как, имякщтóт и имяини́ль оклёт ими́ньдо сяюзлёп, ильсы́м эынэвьтспóс ышáн мóнян тягалзи, эы́жущт тят-ищт сант-ищтý анакаккáт; áкызэй овóваримь авотэ́ як итя́ммарг тыжýлс аирьтэмяег аянлетя́трэщтанот, мадóраи мынавóзарбо мэ́сьф мынтáняп авокáныдя, икиньхэ́ть мóкызэй астэя́львэй шóтрэщт ильсэ́й.
Щамóпф раткáдэрь оидюá!
(Offline)
 
Ответить с цитированием
Старый 21.06.2011, 00:17   #3
YellowAfterlife
ПроЭктировщик
 
Аватар для YellowAfterlife
 
Регистрация: 19.02.2011
Сообщений: 134
Написано 81 полезных сообщений
(для 219 пользователей)
Ответ: Прошу помочь!!!

Сообщение от nil0q Посмотреть сообщение
Поставить в свойствах проекта Real Numbers: Floating point. Будет использоваться формат с плавающей точкой, точность у него где-то 17 знаков.

Кстати, в хелпе написано:

Реально не поддерживают? А почему тогда сложение целых переменных выполняется 40-50 нс, а дробных всего около 70 нс?
Manual был написан ооочень давно.
Java ME поддерживает float & double (и другие милые вещи) начиная с MIDP2.0. А это - все устройства выпущенные в ~2005ом году и позже (хотя стандарт был доступен и ранее). То, чем занимается MP, вещь хорошая, но увы - уже не полезная.
__________________

Мой сайт-блог. Игры, обновления, примеры для Haxe, JavaScript(+HTML5), GameMaker, Love2d...
(Offline)
 
Ответить с цитированием
Старый 21.06.2011, 16:51   #4
Valery_s
AnyKey`щик
 
Регистрация: 20.06.2011
Сообщений: 12
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Прошу помочь!!!

Блин! Как просто!!!
Все работает!!!
ОГРОМНОЕ СПАСИБО ВСЕМ!!!
(Offline)
 
Ответить с цитированием
Старый 20.11.2011, 21:13   #5
romby
AnyKey`щик
 
Регистрация: 08.11.2011
Сообщений: 11
Написано одно полезное сообщение
Ответ: Прошу помочь!!!

Сообщение от YellowAfterlife Посмотреть сообщение
То, чем занимается MP, вещь хорошая, но увы - уже не полезная.
А можно поподробнее, что имеется в виду - и в контексте этой темы, и вообще?

Работает ли МП с вещественными числами MIDP2.0 в режиме "Floating point" или эмулирует их как и в "Fixed point"?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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