• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите, пожалуйста, с программой. Паскаль

  • Автор темы Автор темы Juliet
  • Дата начала Дата начала

Juliet

Новые
Регистрация
16 Дек 2011
Сообщения
18
Реакции
0
Баллы
0
Помогите, пожалуйста, с программой. Паскаль

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

Буду очень признательна)))
 
Разработка программы «Вычисление точного значения суммы дробей»
Составить программу для вычисления точного значения суммы дробей 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.
 
Если бы было "<10", то я и сама бы справилась без труда...) а тут именно знак ">"
 
Назад
Сверху