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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2018, 11:48   #1
roykami11er
 
Регистрация: 15.10.2018
Сообщений: 5
По умолчанию Цикл с известным числом повторений

Здравствуйте, форумчане. Язык Pascal, к сожалению, подзабыл из-за изучения высокоуровневых языков программирования, типа C#, php, ведь почти везде свой синтаксис языка и постоянно путаешься в них (Да, паскаль лёгкий язык, но я его подзабыл, с кем не бывает). Попросили помочь с заданием на Pascal, задание следующее: Найти сумму и количество элементов последовательности, которые по модулю больше 0.001. Последовательность следующая: S = 1/2 - 2/4 + 3/8 - 4/16 + ... - ... (с знаками не ошибитесь, где-то плюс, где-то минус). И программу необходимо реализовать через цикл FOR, а НЕ While, с While я нашёл в интернете (его тоже проверьте на правильность, пожалуйста), но переделать под цикл For голова не додумывается, в общем, прошу помочь, пожалуйста, заранее спасибо.

С Уважением, печенька форума Ройка Миллер.

Код:

var
a, b, sign, n : integer;
sum: real;
begin
a:=1;
b:=2;
sign:= 1;
sum := 0;
n := 0;
 
while a/b > abs(0.001) do begin
sum := sum + sign * (a/b);
n:= n + 1;
sign := -sign;
a := a + 1;
b := b * 2;
end;
writeln(sum);
writeln(n);
end.
roykami11er вне форума Ответить с цитированием
Старый 13.12.2018, 11:51   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

А в чем проблема с фор? Выписываете общий член и решаете неравенство. Потом берете целую часть от полученного и пишите фор от и до.
p51x вне форума Ответить с цитированием
Старый 13.12.2018, 12:09   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Как нефиг-нафиг
Код:
var
a, b, sign, i, n : integer;
s,tmp: real;

begin
   a:=1;
   b:=2;
   sign:= 1;
   s := 0;
  for i := 1 to 1000 do
    begin
      tmp := a/b ;
      if tmp < 0.001 then break ;
      n := i ;
      s := s + tmp*sign ;
      sign := - sign ;
      Inc (a) ;
      b := b+b
    end ;
writeln('s= ', s:8.6,  'n=' ,n);
end.

Последний раз редактировалось digitalis; 13.12.2018 в 12:21.
digitalis вне форума Ответить с цитированием
Старый 13.12.2018, 12:09   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Код:
for i:=1 to ???
if ... <0.0001 then break;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 13.12.2018, 12:30   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Насчет if - в задаче именно 0.001. Вам нужна большая точность ? Я не возражаю
До скольких крутить цикл - вопрос второстепенный. Интуитивно (и с небольшим расчетом "на пальцах" ) понятно, что до 1000 оно никогда не дойдет, выскочит по Break, который именно для таких случаев и предназначен. И пиши там хоть 100, хоть 100000 - работа будет абсолютно одинаковой. Так что к чему это замечание - я не понял. Нужно было провести небольшую НИР для определения n, при котором точно выполнится условие, и пото'м крутить цикл, чтобы точно (и тупо) упереться в это n? Непостижимо...
А, понял. Нужно было в цикле while определить, когда же станет abs(a/b) < 0.001, зафиксировать это n и уже в цикле for считать до n. Тогда наша прога в конкурсе "решение учебной задачи методом <левой_ногой_чесать_правое_ухо>" была бы в числе призеров.

PS
Код:
while a/b > abs(0.001)
- этот перл мне понравился Компилятор долго ржал над этой строкой.
Конечно, имелось в виду abs(a/b) > 0.001, но мне это понятно, а компилятору, пожалуй, - нет.

Последний раз редактировалось digitalis; 13.12.2018 в 19:54.
digitalis вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ЦИКЛЫ С ИЗВЕСТНЫМ ЧИСЛОМ ПОВТОРЕНИЙ (C++) ExDeez Помощь студентам 2 16.10.2014 17:34
Программы с известным числом повторений обработки массивов morphine508 Помощь студентам 3 06.10.2014 22:05
задание на цикл с известным числом повторений passresx Паскаль, Turbo Pascal, PascalABC.NET 5 25.12.2013 15:03
Цикл с известным числом повторений. Getman Помощь студентам 9 09.06.2012 14:26
Цикл с заданным числом повторений Extrem_um Помощь студентам 3 02.04.2008 21:00