|
Основной форум Сюда все проблемы связанные с программированием. |
25.11.2007, 17:49
|
#16
|
AnyKey`щик
Регистрация: 18.11.2007
Сообщений: 19
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: не могу понять в чем прикол
На Nokia прога запускается и выводит нужное число и работает правильно.
Проблема только с Siemensом.
Формула не косячит.
|
(Offline)
|
|
27.11.2007, 09:06
|
#17
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Re: не могу понять в чем прикол
Если ты всё ещё в цикле считаешь, то надо перед каждым циклом в переменную l записывать ноль l:=0; иначе у тебя длина будет с каждым разом всё больше и больше. А Семён тут ни при чём.
|
(Offline)
|
|
30.11.2007, 19:03
|
#18
|
AnyKey`щик
Регистрация: 18.11.2007
Сообщений: 19
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: не могу понять в чем прикол
Так l обнуляется. Я проверил проблема только с Семеном.
|
(Offline)
|
|
30.11.2007, 20:17
|
#19
|
ПроЭктировщик
Регистрация: 31.01.2007
Сообщений: 128
Написано 20 полезных сообщений (для 43 пользователей)
|
Re: не могу понять в чем прикол
Все дело в том, что ты при компиляции выбираешь floating, а не fixed point. На некоторых телефонах при этом расчеты будут проводиться неверно. Я при написании fncalc`а с тем же столкнулся. Список телефонов, на которых будет работать неверно, можно посмотреть здесь http://frolov.net/fncalc/
|
(Offline)
|
|
30.11.2007, 22:34
|
#20
|
AnyKey`щик
Регистрация: 18.11.2007
Сообщений: 19
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: не могу понять в чем прикол
Ниче не получается. При fixed point он выводит только ноль
|
(Offline)
|
|
30.11.2007, 22:57
|
#21
|
ПроЭктировщик
Регистрация: 31.01.2007
Сообщений: 128
Написано 20 полезных сообщений (для 43 пользователей)
|
Re: не могу понять в чем прикол
При fixed point числа могут иметь только 4 знака после запятой. Поэтому, например, если делишь 10 на 1000000, то и получаешь 0. Отсюда и выползает ноль в ответе
|
(Offline)
|
|
30.11.2007, 23:09
|
#22
|
AnyKey`щик
Регистрация: 18.11.2007
Сообщений: 19
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: не могу понять в чем прикол
Но так мне не подходит. Мне нужно, чтобы прога обрабатывала все числа
|
(Offline)
|
|
30.11.2007, 23:31
|
#23
|
ПроЭктировщик
Регистрация: 31.01.2007
Сообщений: 128
Написано 20 полезных сообщений (для 43 пользователей)
|
Re: не могу понять в чем прикол
Проводи расчет не в метрах, а в микрометрах. А уже в конце, при выводе результата, приводи к нужной размерности.
|
(Offline)
|
|
01.12.2007, 00:16
|
#24
|
AnyKey`щик
Регистрация: 18.11.2007
Сообщений: 19
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: не могу понять в чем прикол
Все равно выводится бред. Даже не знаю че делать.
|
(Offline)
|
|
02.12.2007, 23:36
|
#25
|
AnyKey`щик
Регистрация: 18.11.2007
Сообщений: 19
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: не могу понять в чем прикол
Почему никто не пишет. Проблема еще не решена.
|
(Offline)
|
|
03.12.2007, 03:17
|
#26
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Re: не могу понять в чем прикол
Желательно выложить текст программы и указать косяки. Какие значения вводились и что надо получать на выходе, а что реально получается.
|
(Offline)
|
|
03.12.2007, 21:39
|
#27
|
AnyKey`щик
Регистрация: 18.11.2007
Сообщений: 19
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: не могу понять в чем прикол
Текст:
program rulon;
var dsID,hsID,d1sID,stringID: integer;
i, n: integer;
hi,di,d,d1,l,h,r,d1i:real;
cmdCalculate,cmdQuit: command;
begin
ClearForm;
ShowForm;
cmdCalculate := CreateCommand('Считать', CM_OK, 1);
AddCommand(cmdCalculate);
dsID:=FormAddTextField('Введите диаметр рулона в мм', '', 4, TF_NUMERIC);
hsID:=FormAddTextField('Введите толщину материала в мкм', '', 4, TF_NUMERIC);
d1sID:=FormAddTextField('Введите диаметр держателя в мм', '', 4, TF_NUMERIC);
repeat until GetClickedCommand = cmdCalculate;
di:=StringToInteger(FormGetText(dsID));
d:=di;
hi:=StringToInteger(FormGetText(hsID));
h:=hi;
d1i:=StringToInteger(FormGetText(d1sID));
d1:=d1i;
ShowCanvas;
n:=trunc(((d-d1)*1000)/(2*h));
l:=0;
for i:=1 to n do
l:=l+3.14*(d1*1000+2*h*(i));
l:=l/10000;
l:=trunc(l);
l:=l/100;
showForm;
stringID:=FormAddString('Длина рулона: '+l);
removeCommand(cmdCalculate);
cmdQuit := CreateCommand('Выход', CM_EXIT, 1);
AddCommand(cmdQuit);
repeat until GetClickedCommand = cmdQuit;
end.
На входе:
93
100
0
На выходе:
68.3
|
(Offline)
|
|
03.12.2007, 21:41
|
#28
|
AnyKey`щик
Регистрация: 18.11.2007
Сообщений: 19
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: не могу понять в чем прикол
На Семене реально получается около 54-55. Мне кажется,что ему не хватает оперативы.
|
(Offline)
|
|
03.12.2007, 22:14
|
#29
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Re: не могу понять в чем прикол
Похоже у симена просто кривая JVM, оперативка тут не при чем.
|
(Offline)
|
|
03.12.2007, 22:51
|
#30
|
ПроЭктировщик
Регистрация: 31.01.2007
Сообщений: 128
Написано 20 полезных сообщений (для 43 пользователей)
|
Re: не могу понять в чем прикол
Я же говорю - не будет работать на сименсах с плавающей точкой.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:38.
|