-Подписка по e-mail

 

 -Поиск по дневнику

Поиск сообщений в community_coding

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.12.2004
Записей:
Комментариев:
Написано: 536


Помогите с Pascal'ем

+ в цитатник

Cообщение скрыто для удобства комментирования.
Прочитать сообщение


Никнахуйненужен   обратиться по имени Воскресенье, 29 Октября 2006 г. 00:48 (ссылка)
Для переменной, которая используется значение факториала лучше определять тип вещественный (real), т.к. диаппазон integer где-то от -32000 до 32000 (точно не помню, но это и не важно), даже 8!=40320



TLС v.0.7.1
Ответить С цитатой В цитатник
Wethril_Haldar   обратиться по имени Воскресенье, 29 Октября 2006 г. 01:19 (ссылка)
1-е - двойной факториал - это не факториал факториала а факториал касающийся перемножения только нечетных членов последовательности
1*3*5*...*(2n-3)*(2n-1)

2-e факториал можно оформить как рекуррентную(т.е. вызывающую саму себя) функцию. так будет работать побыстрей, и красиво это , в конце-концов)))
Ответить С цитатой В цитатник
Dim_K   обратиться по имени Помогите с Pascal'ем Воскресенье, 29 Октября 2006 г. 08:38 (ссылка)
Что я могу сказать... Несколько неточностей:
1). Вы написали совсем не рекуррентную формулу. Что такое рекуррентная формула? Вот, например, числа Фибоначчи x[1]=1, x[2]=1, x[i]=x[i-2]+x[i-1], i больше 2, то есть следующее слагаемое вычисляется при помощи предыдущих.
2). Выше уже было сказано про двойной факториал, может там все-таки обычный?


program ex;
var m, n, i : integer;
x, s_pred,s_next,sum : real;


begin
repeat
writeln('vvedi m,x');
readln(m);
readln(x);
until ((x>1) and (x<2) and (m>0));
sum:=-(x-1)*(x-1)/2;
s_pred:=sum;
if m>1 then
for n:=2 to m do
begin
s_next:=-s_pred*(x-1)*(x-1)/(2*n); {если нужен обычный факториал а не двойной то делить не на 2n а на n}
sum:=sum+s_next;
s_pred:=s_next;
end; { for n:=2 to m}
writeln('s=', sum:10:4);
readln;
end.
При рекурретных вычислениях не возникает необходимости заводить пременный для "больших" вычислений (факториал), в сумме они обычно погашаются другими множетелями или слагаемыми

LI 5.09.15
Ответить С цитатой В цитатник
Dim_K   обратиться по имени Воскресенье, 29 Октября 2006 г. 08:47 (ссылка)
Wethril_Haldar, мне кажется двойной факториал вычисляется в зависимости от того, четное ли число стоит под знаком двойного факториала или нет. Если четное то это произведение всех четных чисел больше нуля и меньше числа под знаком, если нечетное, соответственно, произведение нечентных.
Ответить С цитатой В цитатник
Хренотень   обратиться по имени Воскресенье, 29 Октября 2006 г. 09:49 (ссылка)
Wethril_Haldar, спасибо))Про двойной факториал я в курсе, просто мне и с обычным было не разобраться...Там по любому произведение чётных получится, ибо 2n это уж наверна чётное число...)))
Никнахуйненужен, а я и риал делала переменную под факториал, я просто столько уже исправляла, что все не все исправляения сохранила.Всё равно не работало))))Но за совет спасибо))
Dim_K, спасибо большое! Про рекуррентную формулу-вот для других вариантов я посмотрела задачи, там я смогла сделать, тоже через пред/след значение и постом передавая эти значения между переменными. А тут мне как-то не придумать было. Спасибо ещё раз, щас буду разбираться))
Ответить С цитатой В цитатник
Гаврик_из_Кащенко   обратиться по имени Воскресенье, 29 Октября 2006 г. 13:35 (ссылка)
кроме integer можно использывать longint (-2 000 000;2 000 000) или наконец задать интервалом: 0..9999999
Ответить С цитатой В цитатник
Гаврик_из_Кащенко   обратиться по имени Воскресенье, 29 Октября 2006 г. 13:47 (ссылка)
если двойной факториал - это факториал от нечетных то тогда вроди так:
code:

program summa;
type my_type=1..999999999;
var j,m: integer;
x,sum: real;
function st(a:real;n:byte):real;
var s:real;
i:byte;
begin
s:=1;
for i:= 1 to n do
s:=s*a;
st:=s;
end;
function fak(n:byte):my_type;
begin
if n=1 then fak:=1
else fak:=n*fak(n-2);
end;
begin
repeat
writeln('vvedi m,x');
readln(m,x);
until ((x>1) and (x<2));
sum:=0;
for j:=1 to m do
begin
sum:=sum+st(-1,j)*st(x-1,2*j)/fak(2*j-1);
end;
writeln('summa=', sum:10:4);
readln;
end.

Ответить С цитатой В цитатник
Хренотень   обратиться по имени Воскресенье, 29 Октября 2006 г. 14:26 (ссылка)
Гаврик_из_Кащенко, если двойной факториал-это ИЛИ от чётных, ИЛИ от нечётных, смотря какое число))
И мне нельзя через функции делать, мне надо циклом =(
Ответить С цитатой В цитатник
Dim_K   обратиться по имени Re: Ответ в community_coding; Помогите с Pascal'ем Воскресенье, 29 Октября 2006 г. 14:27 (ссылка)
Вы предложили не рекуррентый метод вычисления суммы

LI 5.09.15
Ответить С цитатой В цитатник
Гаврик_из_Кащенко   обратиться по имени Re: Ответ в community_coding; Помогите с Pascal'ем Воскресенье, 29 Октября 2006 г. 14:33 (ссылка)
Исходное сообщение Хренотень: Гаврик_из_Кащенко, если двойной факториал-это ИЛИ от чётных, ИЛИ от нечётных, смотря какое число))
И мне нельзя через функции делать, мне надо циклом =(


Какая сволочь это сказала? ну ладно, можно и подправить))

LI 5.09.15
Ответить С цитатой В цитатник
Гаврик_из_Кащенко   обратиться по имени Re: Ответ в community_coding; Помогите с Pascal'ем Воскресенье, 29 Октября 2006 г. 14:33 (ссылка)
Исходное сообщение Dim_K: Вы предложили не рекуррентый метод вычисления суммы


ЗАТО ЭТО РАБОТАЕТ

LI 5.09.15
Ответить С цитатой В цитатник
Dim_K   обратиться по имени Re: Ответ в community_coding; Помогите с Pascal'ем Воскресенье, 29 Октября 2006 г. 14:46 (ссылка)
А кто сказал, что у меня не работает?

LI 5.09.15
Ответить С цитатой В цитатник
Гаврик_из_Кащенко   обратиться по имени Re: Ответ в community_coding; Помогите с Pascal'ем Воскресенье, 29 Октября 2006 г. 14:49 (ссылка)
Исходное сообщение Dim_K: А кто сказал, что у меня не работает?


Никто ничего не говорил

LI 5.09.15
Ответить С цитатой В цитатник
Хренотень   обратиться по имени Воскресенье, 29 Октября 2006 г. 15:01 (ссылка)
Гаврик_из_Кащенко, это всё универ...))никакой свободы выбора, пхахахаха)))Зато может научусь чему путному ;)
Dim_K, я попробовала как вы сказали, у меня сначала всё равно одинаковая сумма получалась, потом убрала формат вывода или как это обозвать...В общем, :10:4. Тогда видно, что сумма разная, но там просто ооочень маленькая разница получается..Так и должно быть?
Ответить С цитатой В цитатник
Гаврик_из_Кащенко   обратиться по имени Re: Ответ в community_coding; Помогите с Pascal'ем Воскресенье, 29 Октября 2006 г. 15:02 (ссылка)
Исходное сообщение Хренотень: Гаврик_из_Кащенко, это всё универ...))никакой свободы выбора, пхахахаха)))Зато может научусь чему путному ;)
Dim_K, я попробовала как вы сказали, у меня сначала всё равно одинаковая сумма получалась, потом убрала формат вывода или как это обозвать...В общем, :10:4. Тогда видно, что сумма разная, но там просто ооочень маленькая разница получается..Так и должно быть?


Наверное
В колонках играет: Город 312 - Останусь

LI 5.09.15
Ответить С цитатой В цитатник
Dim_K   обратиться по имени Re: Ответ в community_coding; Помогите с Pascal'ем Воскресенье, 29 Октября 2006 г. 18:48 (ссылка)
Исходное сообщение
Dim_K, я попробовала как вы сказали, у меня сначала всё равно одинаковая сумма получалась, потом убрала формат вывода или как это обозвать...В общем, :10:4. Тогда видно, что сумма разная, но там просто ооочень маленькая разница получается..Так и должно быть?

Да, этот ряд довольно быстро сходится (слагаемые с нормером n больше 3 уже имею порядок 10 в минус 3), все нормально

LI 5.09.15
Ответить С цитатой В цитатник
Комментировать К дневнику Страницы: [1] [Новые]
 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку