![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите, пожалуйста, разобраться! [D7, XP]
Санёк77 © (2007-05-08 20:14:00)Не врубаюсь, как с помощью операторов if и while посчитать факториал, например, 50! Скажите, кто знает, please!
turbouser (2007-05-22 00:56:00) [1]Мда...
{RASkov} (2007-05-22 00:42:00) [2]> [21] ММК (22.05.07 00:36)
Нисколько.... Водка в малых количествах тоже полезна....)
ММК (2007-05-22 00:36:00) [3]
> {RASkov}
goto вредно для здоровья:)
{RASkov} (2007-05-21 17:11:00) [4]Кстати в моем примере [18] метка LEnd собственно и не нужна...
{RASkov} (2007-05-21 17:08:00) [5]> просто не получается именно с while или if отдельно считать,
> условие для if, while не могу понять..
Ну так условие проверяешь, а менять ситуацию не хочешь, так как i у тебя не меняется все время 0.
А в примере с if у тебя вообще один раз все это делается...) Можно сразу написать N:=N*0; )
{RASkov} (2007-05-21 17:04:00) [6]
> [15] Санёк77 (21.05.07 16:53)
Уже ответили Dec(N, i) = N:=N-i; i - по умолчанию = 1;
> [17] Санёк77 (21.05.07 17:02)
для if
var I,N: Int64;
Label LStep, LEnd;
begin
N:=10;
I:=1;
LStep:
if N>0 then begin I:=I*N; Dec(N); goto LStep; end else goto LEnd;
LEnd:
ShowMessage(IntToStr(I));
end;
:)
Санёк77 (2007-05-21 17:02:00) [7]А понял, increase, decrease.. просто не получается именно с while или if отдельно считать, условие для if, while не могу понять..
X9 (2007-05-21 16:56:00) [8]> [15] Санёк77 (21.05.07 16:53)
> Что такое Dec(n)?
Уменьшение аргумента на единицу. Эквивалентно n:=n-1
Санёк77 (2007-05-21 16:53:00) [9]
> Чем тебе мой пример или begin...end'а - для while не угодил?
Что такое Dec(n)? Я хочу, чтобы программа попроще была..
{RASkov} (2007-05-21 16:51:00) [10]> [12] Санёк77 (21.05.07 16:42)
n:=n*i;
Ну ты приколист... а i чему равно? Чем тебе мой пример или begin...end'а - для while не угодил?
Сергей М. (2007-05-21 16:49:00) [11]
> Я уже всех достал
"Тебя сразу пристрелить или желаешь помучаться ?" (с)
Санёк77 (2007-05-21 16:42:00) [12]Я уже всех достал, наверное, но у меня тут простейшая программа, в ней 3 кнопки: 1ая для оператора for, 2 для if, 3 для while. Должен считаться факториал 10. С for всё считается правильно, в остальных ошибка:-( Подскажите, где эта ошибка, плиз!
procedure TForm1.Button1Click(Sender: TObject);
var
n: integer;
i: Integer;
begin
n:=1;
for i:=1 to 10 do begin
n:=n*i;
end;
ShowMessage(FloatToStr(n));
end;
procedure TForm1.Button2Click(Sender: TObject);
var
n: integer;
i: Integer;
begin
n:=1;
if i<=10 then begin
n:=n*i;
end;
ShowMessage(FloatToStr(n));
end;
procedure TForm1.Button3Click(Sender: TObject);
var
n: integer;
i: Integer;
begin
n:=1;
while i<=10 do begin
n:=n*i;
end;
ShowMessage(FloatToStr(n));
end;
Anatoly Podgoretsky (2007-05-20 20:49:00) [13]> homm (20.05.2007 19:14:07) [7]
Ну ты пукнул :-)
homm (2007-05-20 20:17:00) [14]> Обычно так называют арифметические операции над целыми числами
Оказываеться правда задача нахождения факториала достаточно устойчива. Ошибка в 7-м знаке между single и extended для факториала 32-х. Я в шоке, мне казалось наоборот.
jack128 (2007-05-20 19:58:00) [15]homm © (09.05.07 11:04) [3]
Огромная нарастающая ошибка. Нужно длинную арифметику применять.
Обычно так называют арифметические операции над целыми числами, разрядность которых превосходит разрядность процессора.. bcd тут никаким боком не идет.
begin...end (2007-05-20 19:19:00) [16]> homm © (20.05.07 19:14) [7]
Это называется BCD (двоично-десятичные числа).
homm (2007-05-20 19:14:00) [17]> [4] {RASkov} © (09.05.07 11:16)
> > [3] homm © (09.05.07 11:04)
> > длинную арифметику
> Это что такое?
Помоему именно так называеться когда цифры пакуються по 1 или 2 десятиразрядных цифры в байте. Например число 255 буде представлять уже не $ff, а $5520 или $050502.
begin...end (2007-05-20 18:57:00) [18]var
n: Byte;
r: Extended;
begin
r := 1;
while n <> 0 do
begin
r := r * n;
Dec(n)
end
end
Санёк77 (2007-05-20 16:39:00) [19]У меня не получается посчитать факториал только с while:( Кто знает, помогите, пожалуйста..
{RASkov} (2007-05-09 11:16:00) [20]> [3] homm © (09.05.07 11:04)
> длинную арифметику
Это что такое?