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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2009, 15:06   #1
Юльчик18
Пользователь
 
Регистрация: 11.10.2009
Сообщений: 14
Восклицание ПОМОГИТЕ написать задачку на паскале

Дано натуральное числа n. Вычислить P=(1-1/2)(1-1/4)(1-1/6)...(1-1/2n)
Вот не могу решить и все и блок -схема тож проблемной оказалась!
ПОМОГИТЕ
Юльчик18 вне форума Ответить с цитированием
Старый 11.10.2009, 15:17   #2
Geg[C/c++]
Пользователь
 
Аватар для Geg[C/c++]
 
Регистрация: 18.02.2009
Сообщений: 76
По умолчанию

Задачка не сложная, но лично я в паскале не бум бум... Обратитесь в отдел "фриланс", там вам помогут за умеренную плату.
Все что не делается все к ... А какого черта? Делайте все что задумали и все что вам захочется.
Если конечно задуманное вами не попадает под статью.. © Geg[C/c++][поиск]
Geg[C/c++] вне форума Ответить с цитированием
Старый 11.10.2009, 15:25   #3
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Может так:

Код:
program Project2;
var
i,n:integer;
p:real;
begin
  readln(n);
  p:=1;
  for i:=2 to 20+n do
  begin
     if i mod 2=0 then
     begin
        p:=p*(1-1/i);
     end;
  end;
  writeln(p);
  readln(i);
end.
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 11.10.2009, 15:48   #4
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

если влоб, то надо примерно так:
Код:
var i,n:longint;p:real;
begin
readln(n);
p:=1;
for i:=1 to n do p:=p*(1-1/(2*i)); writeln(p);
end.
Но вот одно "но" - я не вижу ограничений. При маленьком р этот вариант подходит. При сравнительно большом (например, 5000) надо учесть пробелемы с точностью и, в случае необходимости (если надо, к примеру, чтобы была точность до предпоследнего знака типа Real), реализовать все то же с "длинкой" (длинной арифметикой), храня, скажем, 100 цифр после запятой. При еще большем р (скажем, 100000) уже и этот вариант будет думать несколько секунд, как альтернативу можно использовать олимпиадные алгоритмы оптимизации подобных вичислений, что заняло бы строк 100-200 кода
LeBron вне форума Ответить с цитированием
Старый 11.10.2009, 17:29   #5
viktory
Пользователь
 
Регистрация: 02.10.2009
Сообщений: 14
По умолчанию

LeBron, это типичная лаба. Лично у нас в университете никаких ограничений не накладывали, что первое врямя меня выводило из себя. И длинная арифметика тут вообще никаким боком не встала, цель - обучить студентов циклам, не более.
Юльчик18, вот блоксхема для проги LeBron
Овал, в нем написано "начало";
паралелипипед, в нем "readln(n)";
прямоугольник, в нем "p:=1";
шестиугольник "i:=1 to n" - это цикл for;
прямоугольник с "p:=p*(1-1/(2*i))" внутри, стрелочка от него идет на шестиугольник-цикл;
по окончании цикла выполняется "writeln(p)", это параллелепипед;
а потом овал, в нем написано "конец".
Этот старый мир весьма забавен. Над ним нельзя не смеяться. Ведь если не смеяться, можно сойти с ума.
viktory вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Люди помогите решить задачку в ПАСКАЛЕ BO4A Паскаль, Turbo Pascal, PascalABC.NET 0 27.05.2009 00:26
помогите решить задачку в паскале!!! Енка Паскаль, Turbo Pascal, PascalABC.NET 1 29.04.2009 09:54
Помогите имправить задачку в паскале Андрю)(@ Паскаль, Turbo Pascal, PascalABC.NET 9 07.12.2008 02:23
Помогите Помогите Пожалуйста Решить Одну Задачку в Паскале!!! VisTBacK Помощь студентам 6 19.09.2008 13:44
Помогите решить задачку на строки в Паскале. TakeR Помощь студентам 8 26.12.2007 00:09