Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.05.07;
Скачать: [xml.tar.bz2];

Вниз

Обьясните!!!Что-то непонятное как считает Delphi?   Найти похожие ветки 

 
jiurafgdfg   (2006-04-20 15:41) [0]

Написал итерационную программу!
Есть два выражения:
 usop.C[usop.CtypKolvo,i]:=usop.C2kCw[usop.CtypPitania-1,i]*usop.PitaniaToMejc*usop.cf[i]/(usop.OtwalaToMejc*(usop.CkCp[usop.CtypPitania-1,i]*cymma+usop.C2kCw[usop.CtypPitania-1,i]*usop.OtboraToMejc/usop.OtwalaToMejc));

и

usop.C[usop.CtypKolvo,i]:=usop.C2kCw[usop.CtypPitania-1,i]*(usop.PitaniaToMejc*usop.cf[i])/(usop.OtwalaToMejc*(usop.CkCp[usop.CtypPitania-1,i]*cymma+usop.C2kCw[usop.CtypPitania-1,i]*usop.OtboraToMejc/usop.OtwalaToMejc));

Как видно, они полность идентичны, за исключением того, что во втором есть скобки. Но так как все члены перемножаются это не должно играть роли

Запуская программу с первым выражением получается 1283 итерации, а со вторым 756 итераций! Выражения стоят подряд и я ничего не меняю кроме как то второе то первое зеаключаю в {} - чтоб оно не выолнялось!

обе переменные
usop.C[usop.CtypKolvo,i] - определены как Extended!!!

Как такое может быть???


 
Джо ©   (2006-04-20 15:43) [1]

В приведенном коде нет никаких итераций.


 
jiurasdfsdfs   (2006-04-20 15:44) [2]

ДА они здесь и не нужны - программа слишком большая....Неточность кроется только в этих 2-х строках! Остальное не меняется!


 
Джо ©   (2006-04-20 15:49) [3]

> [2] jiurasdfsdfs   (20.04.06 15:44)
> ДА они здесь и не нужны - программа слишком большая....

Повторяю, отвечать вопрос о кол-ве итераций, не видя никаких итераций бессмысленно.

П.С. Расставь скобки по-человечески. Твой код читать невозможно, не думай, что охота кому-то в нём ковыряться.
И прочитай раздел справки Operator precedents, там как раз и описан порядок выполнения операций в Object Pascal.


 
Рамиль ©   (2006-04-20 16:39) [4]

Могу предположить, что usop.PitaniaToMejc и usop.cf[i] числа одного порядка, а usop.C2kCw[usop.CtypPitania-1,i] >> или << чем они. Хотя не уверен. Результат то одинаковый получается, надеюсь?


 
Ega23 ©   (2006-04-20 17:29) [5]

Ерунда какая-то. Я вот тоже хардкорный код знаю:

#include <stdio.h>
main(t,_,a)char *a;{return!0<t?t<3?main(-79,-13,a+main(-87,1-_,
main(-86,0,a+1)+a)):1,t<_?main(t+1,_,a):3,main(-94,-27+t,a)&&t==2?_<13?
main(2,_+1,"%s %d %d\n"):9:16:t<0?t<-72?main(_,t,
"@n"+,#"/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#\
;#q#n+,/+k#;*+,/"r :"d*"3,}{w+K w"K:"+}e#";dq#"l \
q#"+d"K#!/+k#;q#"r}eKK#}w"r}eKK{nl]"/#;#q#n"){)#}w"){){nl]"/+#n";d}rw" i;# \
){nl]!/n{n#"; r{#w"r nc{nl]"/#{l,+"K {rw" iK{;[{nl]"/w#q#n"wk nw" \
iwk{KK{nl]!/w{%"l##w#" i; :{nl]"/*{q#"ld;r"}{nlwb!/*de}"c \
;;{nl"-{}rw]"/+,}##"*}#nc,",#nw]"/+kd"+e}+;#"rdq#w! nr"/ ") }+}{rl#"{n" ")# \
}"+}##(!!/")
:t<-50?_==*a?putchar(31[a]):main(-65,_,a+1):main((*a=="/")+t,_,a+1)
:0<t?main(2,2,"%s"):*a=="/"||main(0,main(-61,*a,
"!ek;dc i@bK"(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"),a+1);}


Прикинь, в таком ошибку искать!


 
Gero ©   (2006-04-20 17:50) [6]

> Как такое может быть???

Продолжай писать в таком стиле, еще и не такое будет.


 
Desdechado ©   (2006-04-20 18:32) [7]

есть такая программистская мудрость - от перестановки слагаемых сумма МЕНЯЕТСЯ
а у тебя перестановка порядка умножения, что еще хуже


 
Джо ©   (2006-04-20 18:37) [8]

> [5] Ega23 ©   (20.04.06 17:29)
> Ерунда какая-то. Я вот тоже хардкорный код знаю:

Не стыдно такое постить? Это ж из категории XXX... 8-)


 
Pavia ©   (2006-04-20 22:33) [9]

Кажись знаю ответ.
Нетак давно в Delphi7 был обнаружил глюк одна и таже строчки при равных входных условиях считала по разному. глюк не распростроняется на другии версии. Ошибка в иницилизации сопроцесоора(fpu). Толи забыли выставить значение толи в циферке ошиблись. а при вызови messagebox виндоус выставлял другое число.
лечится
Set8087CW()
Если не выставить верное значение
procedure TForm1.FormCreate(Sender: TObject);
var a,b,c:Extended;
begin
b:=0.178176194206200011;
c:=30005788672;
ShowMessage(FloatToStr(b*cos(pi*c)*sin(pi*c)));
ShowMessage(FloatToStr(b*cos(pi*c)*sin(pi*c)));
end;


 
Gydvin ©   (2006-04-21 06:56) [10]


> Pavia ©   (20.04.06 22:33) [9]

Да нет вроде одинаковы..
D7



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.05.07;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.011 c
2-1145596469
vegarulez
2006-04-21 09:14
2006.05.07
Про неподключенную БД.


15-1144973253
Дмитрий_177
2006-04-14 04:07
2006.05.07
Отключить на ноутбуке энергосберегающий режим


15-1144916441
Rentgen
2006-04-13 12:20
2006.05.07
как узнать дату вчерашнего дня в PHP


15-1145094377
Volf_555
2006-04-15 13:46
2006.05.07
Текст в Internet Explorer стал отображаться курсивом!


2-1145529617
Байрам
2006-04-20 14:40
2006.05.07
Параллельная прокрутка двух TMemo





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский