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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2011, 13:05   #1
mrRastom
Пользователь
 
Регистрация: 10.12.2010
Сообщений: 16
Сообщение Pascal в последовательности сумм найти первую сумму, не превосходящую число В

Всем привет.

Дана следующая задача:
Цитата:
В последовательности сумм требуется найти первую сумму, которая не превосходит по величине число В.

1, 1+2/3, 1+2/3+3/4, ..., 1+2/3+3/4+...+(n-1)/n
Вначале я написал следующий код:

Код:
Uses crt;
Var b,k,n:real;

Begin
ClrScr;
  writeln('Введите число В:');
  write('B=');
  readln(b);
  writeln;
  
    n:=3;
    k:=1;
  
  while k<b do 
    begin
      k:=k+(n-1)/n;
      n:=n+1;
    end;
  writeln('Необходимая сумма:');
  write(k:0:2);
Readln;
End.
Но вот фраза "первую сумму" заставила меня усомниться в правильности. Правильно ли я понял, что программа должна показать только самую первую сумму в этой последовательности и, если это так, то что необходимо дописать в коде.

Заранее всем спасибо.
mrRastom вне форума Ответить с цитированием
Старый 10.03.2011, 15:36   #2
mrRastom
Пользователь
 
Регистрация: 10.12.2010
Сообщений: 16
По умолчанию

Обнаружил, что программа выдает неверный результат. Он больше числа В.
Теперь никак не могу понять, как сделать так, чтобы программа выдавала предыдущий результат?
Т.е. проблема в том, что, например, задано число b=5 и очередной раз, когда проверяется условие k<b, если k равняется к примеру 4.99, то результат перевалит за 5.
Что делать?
mrRastom вне форума Ответить с цитированием
Старый 10.03.2011, 15:49   #3
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Самый простой вариант - дополнительная переменная, которой присваивается значение B до рассчета очередного цикла.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 10.03.2011, 15:53   #4
Летучий_СкилетиК
Форумчанин
 
Аватар для Летучий_СкилетиК
 
Регистрация: 04.02.2011
Сообщений: 260
По умолчанию

Цитата:
найти первую сумму, которая не превосходит по величине число В
это значит сумма которая наиболее приближена к В и не превосходит ее.
так:
Код:
  while k<b do
    begin
      p:=k;
      k:=k+(n-1)/n;
      n:=n+1;
    end;
  write(p:0:2);
Летучий_СкилетиК вне форума Ответить с цитированием
Старый 10.03.2011, 16:03   #5
mrRastom
Пользователь
 
Регистрация: 10.12.2010
Сообщений: 16
По умолчанию

Vanta11a, Летучий_СкилетиК, спасибо вам огромное!
mrRastom вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Pascal] найти сумму элементов лежащих ниже побочной диагонали Рамик Помощь студентам 12 28.03.2011 22:53
две задачи - выразить денежную сумму в купюрах; по координатам найти периметр (Pascal) p0weR Помощь студентам 2 01.03.2011 18:46
Найти максимальное число в последовательности vladoscom93 Паскаль, Turbo Pascal, PascalABC.NET 11 14.12.2010 21:43
Pascal/ Найти сумму максимальных элементов 3ех массивов. lMasterl Помощь студентам 8 26.09.2010 17:30
Найти сумму чисел последовательности, расположенных между максимальным отрицательным и минимальным положи Maks6169 Помощь студентам 6 02.12.2009 10:38