forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   не могу понять в чем прикол (http://forum.boolean.name/showthread.php?t=5075)

@lexxx 25.11.2007 17:49

Re: не могу понять в чем прикол
 
На Nokia прога запускается и выводит нужное число и работает правильно.
Проблема только с Siemensом.
Формула не косячит.

odd 27.11.2007 09:06

Re: не могу понять в чем прикол
 
Если ты всё ещё в цикле считаешь, то надо перед каждым циклом в переменную l записывать ноль l:=0; иначе у тебя длина будет с каждым разом всё больше и больше. А Семён тут ни при чём.

@lexxx 30.11.2007 19:03

Re: не могу понять в чем прикол
 
Так l обнуляется. Я проверил проблема только с Семеном.

Bruteo 30.11.2007 20:17

Re: не могу понять в чем прикол
 
Все дело в том, что ты при компиляции выбираешь floating, а не fixed point. На некоторых телефонах при этом расчеты будут проводиться неверно. Я при написании fncalc`а с тем же столкнулся. Список телефонов, на которых будет работать неверно, можно посмотреть здесь http://frolov.net/fncalc/

@lexxx 30.11.2007 22:34

Re: не могу понять в чем прикол
 
Ниче не получается. При fixed point он выводит только ноль

Bruteo 30.11.2007 22:57

Re: не могу понять в чем прикол
 
При fixed point числа могут иметь только 4 знака после запятой. Поэтому, например, если делишь 10 на 1000000, то и получаешь 0. Отсюда и выползает ноль в ответе

@lexxx 30.11.2007 23:09

Re: не могу понять в чем прикол
 
Но так мне не подходит. Мне нужно, чтобы прога обрабатывала все числа

Bruteo 30.11.2007 23:31

Re: не могу понять в чем прикол
 
Проводи расчет не в метрах, а в микрометрах. А уже в конце, при выводе результата, приводи к нужной размерности.

@lexxx 01.12.2007 00:16

Re: не могу понять в чем прикол
 
Все равно выводится бред. Даже не знаю че делать.

@lexxx 02.12.2007 23:36

Re: не могу понять в чем прикол
 
Почему никто не пишет. Проблема еще не решена.:SOS:

odd 03.12.2007 03:17

Re: не могу понять в чем прикол
 
Желательно выложить текст программы и указать косяки. Какие значения вводились и что надо получать на выходе, а что реально получается.

@lexxx 03.12.2007 21:39

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

@lexxx 03.12.2007 21:41

Re: не могу понять в чем прикол
 
На Семене реально получается около 54-55. Мне кажется,что ему не хватает оперативы.

ViNT 03.12.2007 22:14

Re: не могу понять в чем прикол
 
Похоже у симена просто кривая JVM, оперативка тут не при чем.

Bruteo 03.12.2007 22:51

Re: не могу понять в чем прикол
 
Я же говорю - не будет работать на сименсах с плавающей точкой.


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot