![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Рассчет фактариала числа
Графтер © (2004-10-22 00:31:00)Помогите, как это можно представить на делфи ? Число вводится пользователем и заранее не известно.
фактариал числа, к примеру, 5 = 1*2*3*4*5
VMcL (2004-10-22 08:27:00) [1]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;
VMcL (2004-10-22 08:24:00) [2]>> Графтер (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
> мозги не работают сооовсем
Когда заработают, возвращайся.
piople (2004-10-22 08:19:00) [3]
> ЮЮ ©
А ты чо собственно выеживаешься?! Это уже проблемы Графтер, я дал идейку, а вот умножение больших чилел это его проблемы!!!!!
ЮЮ (2004-10-22 08:06:00) [4]>Для тех кто в танке применять так:
Для тех, кто в бомбоубежише, так: ShowMessage(IntToStr(Fact( 1000)));
piople (2004-10-22 08:00:00) [5]Вообще есть очень хорошая штучка, рекурсией погоняют?! Слушал?! Если нет, то сунь пальцы в тески и бошку в унитаз!!! Если да то держи:
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;
Anatoly Podgoretsky (2004-10-22 07:46:00) [6]Тут слесарь требуется.
Palladin (2004-10-22 01:23:00) [7]Да я вообще не понял чего я тут распинался... Думал парень поучится хочет... я ошибался...
Gero (2004-10-22 01:20:00) [8]
> мозги не работают сооовсем
Этим все сказано.
> Palladin ©
Тимур, не мучай человека...
Графтер (2004-10-22 00:57:00) [9]Все-такие не могу я врубить как мне отобразить значение lg4! ...
Делать нужно срочно, мозги не работают сооовсем, помогите, только как вывести lg4!, остальное сам начну изучать немного позже...
Palladin (2004-10-22 00:52:00) [10]
> [3] Графтер (22.10.04 00:43)
См. [5], первый абзац. Получай навыки комбинирования операторов.
Palladin (2004-10-22 00:51:00) [11]А вот для этого нужно думать... Вдуматся что есть цикл. Что в нем увеличивается, как можно использовать данную величину в вычислении факториала... так же неопбходимо знать про переменные... про возможные операции над ними... пытатся все это вместе увязать...
Как решить эту задачу без циклов с фиксированным заранее числом, факториал которого нужно получить.
Можно просто написать
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. Хотя если вы работаете с консольными прилоениями то придется заглянуть в учебник и посмотреть операторы ввода/вывода паскаля.
Графтер (2004-10-22 00:43:00) [12]И, допустим, как представить такую конструкцию : корень из lg4!
Mihey_temporary (2004-10-22 00:43:00) [13]for i := N downto 1.....
Графтер (2004-10-22 00:40:00) [14]Да, молодой, да, немного имею...
Не могу понять как его задать нужно...
Palladin (2004-10-22 00:35:00) [15]Молодой человек (видимо очень), Вы о циклах понятие имеете?