Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2011, 19:17   #1
Alexxxxxx
Пользователь
 
Регистрация: 21.10.2011
Сообщений: 22
По умолчанию В паскале задача

Дано целое число N(>0).Вывести сумму 2+1/(2!)+1/(3!)+...+1/(N!) (выражение N!-"N факториал "-обозначает произведение всех чисел от 1 до N: N!=1*2*...*N).Полученное число является приближенным значением константы e=exp(1)(=2.71828183...).
Alexxxxxx вне форума Ответить с цитированием
Старый 22.10.2011, 19:48   #2
iCaesy
In progress...
Форумчанин
 
Регистрация: 25.09.2011
Сообщений: 161
По умолчанию

Что непонятного ?)
iCaesy вне форума Ответить с цитированием
Старый 22.10.2011, 19:52   #3
Alexxxxxx
Пользователь
 
Регистрация: 21.10.2011
Сообщений: 22
По умолчанию

Цитата:
Сообщение от iCaesy Посмотреть сообщение
Что непонятного ?)
Капец вообще не врубаюсь как решить эту задачу ((( Помоги составить программу , плз !!!
Alexxxxxx вне форума Ответить с цитированием
Старый 22.10.2011, 19:54   #4
dosha
Форумчанин
 
Регистрация: 30.08.2010
Сообщений: 224
По умолчанию

Код:


function factorial(n: integer): integer;
begin
if n > 1
then factorial := n * factorial(n-1) // функция вызывает сама себя
else factorial:= 1;  // факториал 1 равен 1
end;

var
N,i:integer;
S:real;
begin
s:=0;
for i:=0 to N do
s:=s+1/factorial(i);
end.
вроде как бэ так, остальное сам дописуй
dosha вне форума Ответить с цитированием
Старый 22.10.2011, 22:14   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

dosha
в подобных задачах НЕ НУЖНО считать факториал. достаточно заметить, что каждый следующий член последовательности содержит знаменатель равнный предыдущему умноженному на N
сравните:
Код:
var i, N : integer;
  s, znam : extended;
begin
  Readln(N);
  s := 2;
  znam := 1;
  for i:=2 to  N do begin
    znam := znam * i;
    s := s + 1/znam;
  end;
  WriteLn(s:0:18);
  readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.10.2011, 22:17   #6
dosha
Форумчанин
 
Регистрация: 30.08.2010
Сообщений: 224
По умолчанию

Serge_Bliznykov можно и так. эть первое, что взбрело в голову
dosha вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача в Паскале Саня просто саня Фриланс 5 12.05.2011 02:25
задача в паскале!!! ALYA18 Помощь студентам 5 11.02.2011 21:50
Задача на паскале Zeir Помощь студентам 5 08.10.2010 22:34
Задача в Паскале spankyham Помощь студентам 14 14.04.2009 17:10