![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
У меня тут возникла проблемка...
Необходимо возвести число в какую-либо степень.... Я пишу S:=Exp((-0.5)*Ln(sigma1)) , но программа запускаться не хочет, ставит указатель после Ln и пишет [Error] Unit3.pas(121): Missing operator or semicolon. Вроде же все написано правильно, как так.... Подскажите? |
|
#2
|
|||
|
|||
|
Всё откомпилировалось. Может, действительно нужна точка с запятой (semicolon)?
Код:
var S: Real; sigma1: Real = 2.0; procedure TForm1.FormCreate(Sender: TObject); begin S:=Exp((-0.5)*Ln(sigma1)) end; |
|
#3
|
|||
|
|||
|
Да так все работает..
А в моем коде, нет Код:
begin
Reky:=(w*dtr)/v;
//расчет для КУ
//пароперегреватель
if (sigma1<=sigma2) and (fi>=0.06) and (fi<=1) then
ksi:=(2*(Exp((-0.5)*Ln(sigma1-1)))*(Exp((-0.2)*Ln(Reky))))*Zparo
else
if (sigma1>sigma2) and (fi>1) and (fi<=8) then
ksi:=(0.38*(Exp((-0.5)*Ln(sigma1-1)))* Exp((-0.59)*Ln(fi-0.94))* Exp((-0.2/(sqr(fi))*Ln(Reky))))*Zparo
else
if (sigma1>sigma2) and (fi>8) and (fi<=15) then
ksi:=(0.118*(Exp((-0.5)*Ln(sigma1-1))))*Zparo;
end;
Form3.StringGrid2.Cells[0,0]:='Re';
Form3.StringGrid2.Cells[0,i]:=FloatToStr(Reky);
Form3.StringGrid2.Cells[1,0]:='Коэф сопр паропер';
Form3.StringGrid2.Cells[1,i]:=FloatToStr(ksi); |
|
#4
|
|||
|
|||
|
1. Есть функция Power. Если по типам параметров подходит, то используй ее.
2. Сделай отдельную фнукцию возведения в степень и в своем коде используй ее - наверняка у тебя скобок или еще чего-нить в этом роде не хватает. |
|
#5
|
|||
|
|||
|
Цитата:
Не надо делать лишних операций, если всё гораздо проще. |
|
#6
|
|||
|
|||
|
Цитата:
|
|
#7
|
||||
|
||||
|
Обычно использую эту:
Код:
function Pow(base,exponent:Extended):Extended; asm fld tbyte ptr [exponent] fld tbyte ptr [base] fyl2x fld ST(0) frndint fxch fsub ST(0),ST(1) f2xm1 fld1 faddp fscale fstp ST(1) end; |