Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ] > Код на шару!
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.11.2013, 16:30
Justfast Justfast вне форума
Прохожий
 
Регистрация: 09.11.2013
Сообщения: 2
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Переделать код с одного оператора цикла в другой

Помогите пожалуйста переделать готовый код. Но что бы в нем использовались операторы цикла "while do" а не "repeat until".

Код:
{$APPTYPE CONSOLE}

uses
  SysUtils;

  function fact(x: Integer): Integer;
begin
if x=1 then
fact:=1
else
fact:=fact(x-1)*x;
end;

const e=10e-5;
var x,s,sk:real;
   k:integer;
begin
  readln(x);
  sk:=1;
  s:=1;
  k:=0;
  writeln('e = ',e:0:4);
 repeat
    k:=k+1;
    sk:=-sk*x*x/((2*k-1)*fact(2*k));
    s:=s+(2*k*k+1)*sk;
    writeln('chlen[',k,'] = ',sk*(2*k*k+1):0:5);
  until (abs(sk*(2*k*k+1))<e);
  writeln('s = ',s:0:5,', k = ',k);
  readln
end.
Ответить с цитированием
  #2  
Старый 09.11.2013, 21:27
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,020
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Justfast
Помогите пожалуйста переделать готовый код. Но что бы в нем использовались операторы цикла "while do" а не "repeat until".
Инвертируй условие.

Код:
 While (abs(sk*(2*k*k+1))>e) do begin
    k:=k+1;
    sk:=-sk*x*x/((2*k-1)*fact(2*k));
    s:=s+(2*k*k+1)*sk;
    writeln('chlen[',k,'] = ',sk*(2*k*k+1):0:5);
  end;
Ответить с цитированием
  #3  
Старый 10.11.2013, 15:13
Justfast Justfast вне форума
Прохожий
 
Регистрация: 09.11.2013
Сообщения: 2
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Спасибо большое. Странно, вроде так же все делал, но не получалось.
Ответить с цитированием
  #4  
Старый 18.11.2013, 13:11
ProDaNTe ProDaNTe вне форума
Новичок
 
Регистрация: 25.12.2011
Сообщения: 75
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Инвертируй условие.
Код:
 While (abs(sk*(2*k*k+1))>e) do begin
    k:=k+1;
    sk:=-sk*x*x/((2*k-1)*fact(2*k));
    s:=s+(2*k*k+1)*sk;
    writeln('chlen[',k,'] = ',sk*(2*k*k+1):0:5);
  end;
Может >= ?
Ответить с цитированием
  #5  
Старый 16.01.2014, 05:43
Аватар для morebeauty
morebeauty morebeauty вне форума
Начинающий
 
Регистрация: 21.06.2012
Сообщения: 106
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Может >= ?
Однозначно!
Ответить с цитированием
  #6  
Старый 16.01.2014, 06:28
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,020
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Без особой разницы. Там все равно значение очень маленькое.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:29.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter