Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Не пойму где ошибка :(

Автор: Visual 28.11.2007 3:21

Задача такая:

Дана некоторая последовательность C. Найти максимальный номер I, при котором выполнено нижеследующее условие: C1=Ln(1+1!), C2=Ln(1+3!),C3=Ln(1+5!)...
Ci <1.0e+06

Вот начал делать:


Program zadacha;

uses crt;
Function Fact(N: Word): LongInt;
Begin
If N = 1 then
Fact:= 1
else
Fact:= N * Fact(N-1);
End;

var m, i,c:real;
begin

m:=1;
i:=1;
while c<1.0e+06 do
begin
c:=ln(1+i);
m:=m+2;
i:=Fact(round(m));
end;

writeln©;
readln;

end.



По моему тут ошибка с объявлением переменных. Помогите пожалуйста!

Автор: volvo 28.11.2007 3:31

Цитата
По моему тут ошибка с объявлением переменных.
Факториал 14 уже не помещается в LongInt, но при этом Ln(1 + 11!) равен всего 17.5 ...

Понимаешь, в чем дело? Тебе не надо вычислять факториал отдельно, достаточно домножать на очередной итерации произведение на (m - 1)*m, чтобы получать постоянно m!, при этом пускай m остается типа Real, так туда поместится гораздо большее число, чем 12! ...

Автор: Visual 29.11.2007 4:55

volvo - спс, респект!:)

Автор: Visual 30.11.2007 2:20

Блин, у меня всё равно ошибка вылетает((

Автор: volvo 30.11.2007 2:26

Показывай код...

Автор: Visual 4.12.2007 4:34

Всё тема закрыта, я всё сделал!