Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 09.05.2012, 08:18   #1 (permalink)
Juliet
Member
 
Регистрация: 16.12.2011
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите, пожалуйста, с программой. Паскаль

Разработка программы «Вычисление точного значения суммы дробей»
Составить программу для вычисления точного значения суммы дробей 1/1!+1/2!+1/3!+...+1/n! при n>10. Ответ должен быть представлен в виде несократимой дроби p/q, где р,q – натуральные числа.

Буду очень признательна)))
Juliet вне форума   Ответить с цитированием

Старый 09.05.2012, 08:18
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Похожая задача уже решалась на нашем форуме

Помогите, пожалуйста, с программой
Помогите пожалуйста с программой на паскале
Помогите, пожалуйста, с программой на языке C++
Помогите, пожалуйста, с программой
Помогите, пожалуйста, с программой
Помогите пожалуйста с программой

Старый 09.05.2012, 10:21   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Juliet Посмотреть сообщение
Разработка программы «Вычисление точного значения суммы дробей»
Составить программу для вычисления точного значения суммы дробей 1/1!+1/2!+1/3!+...+1/n! при n>10. Ответ должен быть представлен в виде несократимой дроби p/q, где р,q – натуральные числа.

Буду очень признательна)))
Ну что же - пожалуйста. Только вот... Вы знаете, я в некотором недоумении. Вы АБСОЛЮТНО уверены, что не перепутали знак неравенства в условии "n>10"? Поясню. По условию задачи тут приходится работать с целыми числами. Но в большинстве реализаций Паскаля целочисленный формат не идет дальше четырехбайтового (тип LongInt в Turbo или Integer в АВС), а это всего-то до 2147483647, отсюда максимальное значение N составляет 12. Мой Free Pascal понимает восьмибайтовый формат QWord, тут несколько полегче: предел 18446744073709551615 и максимальное значение N уже 20. Его я и применил в программе. Если же, как я подозреваю, с условием Вы (или составители методички, что в порядке вещей) напутали, и Ваш Паскаль не понимает формата QWord, то замените в программе (в трех местах) этот QWord на LongInt (для Turbo) или Integer (для АВС).
Код:
Var
 N,i:Byte;
 p,q,m:QWord;

function Nfact(r:Byte):QWord;
VAR
  j:Byte;
  fact:QWord;
BEGIN
  IF r=0 THEN fact:=1 ELSE
    BEGIN
      fact:=1;
      FOR j:=1 TO r DO
        fact:=fact*j;
    END;
  Nfact:=fact;
END;


Begin
 Repeat
  Write('N= (0 to quit): ');
  Readln(N);
  If N>0 then
   begin
    q:=Nfact(N);
    p:=0;
    For i:=1 to N do
     p:=p+(q div Nfact(i));
    For i:=2 to N do
     If ((p mod i)=0) and ((q mod i)=0) then
      begin
       p:=p div i;
       q:=q div i;
      end;
    Writeln('p = ',p);
    Writeln('q = ',q);
    Writeln('Testing:');
    Writeln('p/q = ',1.0*p/q:8:6,'    e-1 = ',Exp(1)-1:8:6);
   end;
 Until N=0;
End.
Vladimir_S вне форума   Ответить с цитированием
Старый 09.05.2012, 11:12   #3 (permalink)
Juliet
Member
 
Регистрация: 16.12.2011
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Если бы было "<10", то я и сама бы справилась без труда...) а тут именно знак ">"
Juliet вне форума   Ответить с цитированием
Старый 09.05.2012, 12:25   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Juliet Посмотреть сообщение
Если бы было "<10", то я и сама бы справилась без труда...) а тут именно знак ">"
Ну так что - подходит решение с QWord или надо без него изворачиваться?
Vladimir_S вне форума   Ответить с цитированием
Старый 09.05.2012, 13:00   #5 (permalink)
Juliet
Member
 
Регистрация: 16.12.2011
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Ну так что - подходит решение с QWord или надо без него изворачиваться?
Думаю да, спасибо огромное)))
Juliet вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 09.05.2012, 13:22   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Juliet Посмотреть сообщение
Думаю да, спасибо огромное)))
Ну дай-то Бог, потому что иначе придется переходить к строкам, сдвигам - в общем, жуть беспросветная...
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 21:59.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.