Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

Здравствуйте, форумчане. Язык 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, 12:51   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 13,109
Репутация: 2237
По умолчанию

А в чем проблема с фор? Выписываете общий член и решаете неравенство. Потом берете целую часть от полученного и пишите фор от и до.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 13.12.2018, 13:09   #3
digitalis
Профессионал
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Адрес: Минск
Сообщений: 1,193
Репутация: 445
По умолчанию

Как нефиг-нафиг
Код:

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 в 13:21.
digitalis на форуме   Ответить с цитированием
Старый 13.12.2018, 13:09   #4
evg_m
Профессионал
 
Регистрация: 20.04.2008
Сообщений: 4,777
Репутация: 2114
По умолчанию

Код:

for i:=1 to ???
if ... <0.0001 then break;

__________________
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума   Ответить с цитированием
Старый 13.12.2018, 13:30   #5
digitalis
Профессионал
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Адрес: Минск
Сообщений: 1,193
Репутация: 445
По умолчанию

Насчет 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 в 20:54.
digitalis на форуме   Ответить с цитированием
Ответ

Опции темы

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

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

Быстрый переход

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


23:02.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru