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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2012, 09:11   #1
}|{eka
Пользователь
 
Регистрация: 01.04.2012
Сообщений: 16
По умолчанию Задача на циклы

Здраствуйте помогите пожалуйста я не могу переделать готовую задачу цикла while в остальные циклы for и repeat, вот задача:

Код:
unit Unit1; 

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  ExtCtrls, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label10: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    procedure Button1Click(Sender: TObject);

  private
    { private declarations }
  public
    { public declarations }
  end; 

var
  Form1: TForm1; 

implementation

{ TForm1 }


procedure TForm1.Button1Click(Sender: TObject);
const
  e = 0.00001;
  pv=1.03;
var
  R, p, h, d, c: real;
begin
r:=strtoint(form1.Edit1.Text);
p:=strtoint(form1.Edit2.Text);
  h:=0;
  d:=4*r;
  c:=4*p*r*r*r;
  while abs(pv*h*h*(3*r-h)-c)>e do
  begin
    if d*(pv*h*h*(3*r-h)-c)<0 then
      d:=d/2
    else
      d:=-d/2;
    h:=h+d;

 end;
  form1.Label6.Caption:='   '+floattostrf((r-h),fffixed,0,1)+'(Цикл While)';

end;




initialization
  {$I unit1.lrs}

end.
Помогите пожалуйста
}|{eka вне форума Ответить с цитированием
Старый 25.06.2012, 09:31   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Код:
  repeat
    if d*(pv*h*h*(3*r-h)-c)<0 then
      d:=d/2
    else
      d:=-d/2;
    h:=h+d;

 until abs(pv*h*h*(3*r-h)-c)<=e;
А с for скорее всего обломится.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.06.2012, 09:43   #3
}|{eka
Пользователь
 
Регистрация: 01.04.2012
Сообщений: 16
По умолчанию

да обломалось ошибка

забыл сказать, за этот цикл (repeat) спасибо тебе Stilet работает правильно, а счетчик даже не представляю как сделать, что там можно ограничить

Последний раз редактировалось Stilet; 27.06.2012 в 21:29.
}|{eka вне форума Ответить с цитированием
Старый 27.06.2012, 21:31   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
что там можно ограничить
А практически ничего. FOR в паскалеподобных языках не приспособлен к условному противостоянию )
Хотя конечно есть какерские методы....
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на циклы Terson Помощь студентам 0 17.12.2011 15:10
задача на циклы.... pashqa Помощь студентам 12 13.12.2010 00:08
задача на циклы! Voldemort93 Паскаль, Turbo Pascal, PascalABC.NET 9 11.09.2010 16:04
Задача на циклы Элис Помощь студентам 4 30.04.2009 19:44
Задача на циклы AlexLAN Паскаль, Turbo Pascal, PascalABC.NET 4 16.11.2008 10:57