0 / 0 / 0
Регистрация: 24.09.2013
Сообщений: 52
1

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

19.02.2014, 14:24. Показов 3108. Ответов 9
Метки нет (Все метки)

Всем привет. Нужно создать калькулятор, все арифметические действия я сделал, но никак не могу понять как написать такую функцию двоичный логарифм факториала. Подскажите пожалуйста
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.02.2014, 14:24
Ответы с готовыми решениями:

Двоичный логарифм количества размещений с повторениями
Ребят, как в делфи реализовать нахождение Двоичного логарифма количества размещений с повторениями.

Двоичный логарифм
По данному натуральному числу N выведите такое наименьшее целое число k, что 2k≥N. Операцией...

Двоичный логарифм
По данному натуральному числу N выведите такое наименьшее целое число k, что 2k≥N. Операцией...

Двоичный логарифм без Math
Написать статический метод ln(), который принимает в качестве аргумента значение N типа int и...

9
3926 / 2844 / 660
Регистрация: 08.06.2007
Сообщений: 9,639
Записей в блоге: 4
19.02.2014, 15:57 2
Delphi
1
2
3
4
5
6
7
8
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;
0
0 / 0 / 0
Регистрация: 24.09.2013
Сообщений: 52
19.02.2014, 18:48  [ТС] 3
спасибо, но как изменить под формат моего калькулятора? Например чтобы перевести в степень у меня такой код
Delphi
1
2
3
4
5
6
7
8
9
10
11
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;
0
Почетный модератор
64272 / 47571 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
19.02.2014, 19:38 4
точно так же
Delphi
1
2
3
C:=log2fact(A);
STR(C:0:3,st);
Edit5.Text:=st;
Добавлено через 53 секунды
Функция описывается в начале программы, до процедур..
0
0 / 0 / 0
Регистрация: 24.09.2013
Сообщений: 52
19.02.2014, 20:11  [ТС] 5
я в этом новичок, можно поподробнее, а то у меня не работает(
0
Почетный модератор
64272 / 47571 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
19.02.2014, 20:18 6
Ну я не телепат, но примерно так.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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;
0
0 / 0 / 0
Регистрация: 24.09.2013
Сообщений: 52
19.02.2014, 20:51  [ТС] 7
ерунда какая то, выдает много ошибок, хоть функцию описал после слова private

Добавлено через 19 минут
выдает несовместимость Real and Integer
0
3926 / 2844 / 660
Регистрация: 08.06.2007
Сообщений: 9,639
Записей в блоге: 4
19.02.2014, 21:29 8
Цитата Сообщение от sereganator Посмотреть сообщение
выдает несовместимость Real and Integer
Тогда начните функцию по-другому
Delphi
1
function log2fact(n: Real): Real;
Вообще-то грех вычислять факториал от действительного числа.
Потом, смущает, что вы используете функцию Val. В Delphi вообще-то принято использовать функции типа StrToInteger. Из Edit1 вы получаете строку типа String, а Val подразумевает использование ShortString. Правда, преобразования происходят автоматом, но предупреждения все равно выдаются.
0
0 / 0 / 0
Регистрация: 24.09.2013
Сообщений: 52
19.02.2014, 21:31  [ТС] 9
объясни пожалуйста на примере, что такое двоичный логарифм факториала.
0
3926 / 2844 / 660
Регистрация: 08.06.2007
Сообщений: 9,639
Записей в блоге: 4
19.02.2014, 21:52 10
Ну, если n=4 то надо вычислить https://www.cyberforum.ru/cgi-bin/latex.cgi?\mbox{log}_2\, (1\cdot2\cdot3\cdot4)=\mbox{log}_2\,1+\mbox{log}_2\,2+\mbox{log}_2\,3+\mbox{log}_2\,4.

Добавлено через 15 минут
Я поясню. Экономнее и очевиднее сначала вычислять факториал, а потом брать от него логарифм. Но если число n большое, например 1000, то вы рискуете получить переполнение при вычислении факториала. Поэтому я разложил логарифм произведения в сумму логарифмов.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.02.2014, 21:52
Помогаю со студенческими работами здесь

Описать рекурсивные функции вычисляющие значения факториала и двойного факториала
Написать блок схему и программу согласно заданию. Описать рекурсивные функции Fact(n) и Fact2(N)...

Логарифм
Подскажите, как записать lg|x| на Паскале. Именно с модулем

Логарифм
program one; //uses crt; var x1, x2, x3, y1, y2, y3: real; begin //clrscr; ...

Логарифм
log_{2}x\approx \sum_{k=1}^{3} a_{2k-1} {(\frac{x-1}{x+1})}^{2k-1} , 1\leq x \leq \sqrt{2} Где...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru