Текущий архив: 2004.11.07;
Скачать: CL | DM;
ВнизРассчет фактариала числа Найти похожие ветки
← →
Графтер (2004-10-22 00:31) [0]Помогите, как это можно представить на делфи ? Число вводится пользователем и заранее не известно.
фактариал числа, к примеру, 5 = 1*2*3*4*5
← →
Palladin © (2004-10-22 00:35) [1]Молодой человек (видимо очень), Вы о циклах понятие имеете?
← →
Графтер (2004-10-22 00:40) [2]Да, молодой, да, немного имею...
Не могу понять как его задать нужно...
← →
Графтер (2004-10-22 00:43) [3]И, допустим, как представить такую конструкцию : корень из lg4!
← →
Mihey_temporary © (2004-10-22 00:43) [4]for i := N downto 1.....
← →
Palladin © (2004-10-22 00:51) [5]А вот для этого нужно думать... Вдуматся что есть цикл. Что в нем увеличивается, как можно использовать данную величину в вычислении факториала... так же неопбходимо знать про переменные... про возможные операции над ними... пытатся все это вместе увязать...
Как решить эту задачу без циклов с фиксированным заранее числом, факториал которого нужно получить.
Можно просто написатьVar
Res:Integer;
Begin
Res:=1*2*3*4*5;
End;
Можно развернуть выражениеRes:=1;
Res:=Res*2;
Res:=Res*3;
Res:=Res*4;
Res:=Res*5;
Теперь вспоминаем что цикл можно задать последовательным увеличением его переменной.Var
i:Integer;
Begin
For i:=1 to 5 Do ...
End;
И теперь можно заметить что в выраженииRes:=1;
Res:=Res*2;
Res:=Res*3;
Res:=Res*4;
Res:=Res*5;
последний множитель переменной постоянно увеличивается на единицу и все это дело можно записать в виде цикла. А вот как, попробуй реализовать сам.
Если справишься, то, я думаю, тебе не составить подобным образом оформить более общую задачу: вычисление факториала N. Где N вводится с в TEdit. Хотя если вы работаете с консольными прилоениями то придется заглянуть в учебник и посмотреть операторы ввода/вывода паскаля.
← →
Palladin © (2004-10-22 00:52) [6]
> [3] Графтер (22.10.04 00:43)
См. [5], первый абзац. Получай навыки комбинирования операторов.
← →
Графтер (2004-10-22 00:57) [7]Все-такие не могу я врубить как мне отобразить значение lg4! ...
Делать нужно срочно, мозги не работают сооовсем, помогите, только как вывести lg4!, остальное сам начну изучать немного позже...
← →
Gero © (2004-10-22 01:20) [8]
> мозги не работают сооовсем
Этим все сказано.
> Palladin ©
Тимур, не мучай человека...
← →
Palladin © (2004-10-22 01:23) [9]Да я вообще не понял чего я тут распинался... Думал парень поучится хочет... я ошибался...
← →
Anatoly Podgoretsky © (2004-10-22 07:46) [10]Тут слесарь требуется.
← →
piople © (2004-10-22 08:00) [11]Вообще есть очень хорошая штучка, рекурсией погоняют?! Слушал?! Если нет, то сунь пальцы в тески и бошку в унитаз!!! Если да то держи:
function Fact(n: Integer): Integer;
begin
if N = 1 then exit else result := N * Fact(N - 1);
end;
Для тех кто в танке применять так:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(IntToStr(Fact(3)));
end;
← →
ЮЮ © (2004-10-22 08:06) [12]>Для тех кто в танке применять так:
Для тех, кто в бомбоубежише, так: ShowMessage(IntToStr(Fact(1000)));
← →
piople © (2004-10-22 08:19) [13]
> ЮЮ ©
А ты чо собственно выеживаешься?! Это уже проблемы Графтер, я дал идейку, а вот умножение больших чилел это его проблемы!!!!!
← →
VMcL © (2004-10-22 08:24) [14]>>Графтер (22.10.04 00:31)
>Рассчет фактариала числа
Что такое "фактариал", не знаю. А факториал можно рассчитать так:// N = 0 .. 65
function Fact(const N: Byte): Int64;
var
I: Integer;
begin
Result := 1;
for I := 2 to N do
Result := Result * I;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
N: LongWord;
begin
N := StrToInt(Edit1.Text);
ShowMessage(Format("%u! = %u", [N, Fact(N)]));
end;
На форме:
* Edit1: TEdit
* Button1: TButton
>мозги не работают сооовсем
Когда заработают, возвращайся.
← →
VMcL © (2004-10-22 08:27) [15]P.S.
Чтобы можно было использовать бОльшие N:function Fact(const N: Word): Extended;
var
I: Integer;
begin
Result := 1;
for I := 2 to N do
Result := Result * I;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
N: LongWord;
begin
N := StrToInt(Edit1.Text);
ShowMessage(Format("%u! = %g", [N, Fact(N)]));
end;
Страницы: 1 вся ветка
Текущий архив: 2004.11.07;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.049 c