Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите, пожалуйста, разобраться! [D7, XP]


Страницы:   1 2

Санёк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)
> длинную арифметику

Это что такое?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо