Двоичный логарифм факториала

Всем привет. Нужно создать калькулятор, все арифметические действия я сделал, но никак не могу понять как написать такую функцию двоичный логарифм факториала. Подскажите пожалуйста
9 ответов

function log2fact(n: Integer): Real;
var
  r: Real;
  i: Integer;
begin
  r:=0.0;
  for i := 2 to n do r := r + ln(10);
  log2fact := r/ln(2.0);
end;


спасибо, но как изменить под формат моего калькулятора? Например чтобы перевести в степень у меня такой код
procedure TForm1.Button7Click(Sender: TObject);
var A,B,C:real; st:string; code : integer;
begin
st:=Edit1.Text;
Val(st,A,code);
st:=Edit2.Text;
Val(st,B,code);
C:=Power(A,B);
STR(C:0:3,st);
Edit3.Text:=st;
end;


точно так же
C:=log2fact(A);
STR(C:0:3,st);
Edit5.Text:=st;
Функция описывается в начале программы, до процедур..


я в этом новичок, можно поподробнее, а то у меня не работает(


Ну я не телепат, но примерно так.
function log2fact(n: Integer): Real;
var
  r: Real;
  i: Integer;
begin
  r:=0.0;
  for i := 2 to n do r := r + ln(10);
  log2fact := r/ln(2.0);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
 
end;
 
procedure TForm2.Button2Click(Sender: TObject);
begin
 
end;
 
............................................................
procedure TForm1.Button7Click(Sender: TObject);
begin
 
end;
procedure TForm1.Button8Click(Sender: TObject);
var A,B,C:real; st:string; code : integer;
begin
st:=Edit1.Text;
Val(st,A,code);
C:=log2fact(A);
STR(C:0:3,st);
Edit6.Text:=st;
end;


ерунда какая то, выдает много ошибок, хоть функцию описал после слова privateвыдает несовместимость Real and Integer


выдает несовместимость Real and Integer
Тогда начните функцию по-другому
function log2fact(n: Real): Real;
Вообще-то грех вычислять факториал от действительного числа. Потом, смущает, что вы используете функцию Val. В Delphi вообще-то принято использовать функции типа StrToInteger. Из Edit1 вы получаете строку типа String, а Val подразумевает использование ShortString. Правда, преобразования происходят автоматом, но предупреждения все равно выдаются.


объясни пожалуйста на примере, что такое двоичный логарифм факториала.


Ну, если n=4 то надо вычислить Я поясню. Экономнее и очевиднее сначала вычислять факториал, а потом брать от него логарифм. Но если число n большое, например 1000, то вы рискуете получить переполнение при вычислении факториала. Поэтому я разложил логарифм произведения в сумму логарифмов.