Реально ли перебить этот фрагмент под цикл For?
Var x,eps,U,Un:Real;
a:Byte;
.......
U:=1;
a:=2;
Un:=U*cos(x/a);
Repeat
U:=Un;
Un:=U*cos(x/a);
a:=a*2
Until Abs (Un-U)<eps;
........
Var x,eps,U,Un:Real;
a:Byte;
.......
U:=1;
a:=2;
Un:=U*cos(x/a);
Repeat
U:=Un;
Un:=U*cos(x/a);
a:=a*2
Until Abs (Un-U)<eps;
........
const
maxIter = 100; { можешь поменять... }
Var
x,eps,U,Un:Real;
a:Byte;
stop: boolean;
...
U := 1; a := 2; Un := U*Cos(x/a);
stop := False;
for i := 1 to maxIter Do
If not stop Then Begin
U := Un; Un := U*Cos(x/a);
a := a*2;
{ Как только stop станет равным True, остаток цикла пройдет вхолостую... }
stop := (Abs(Un - U) < eps);
End;
...
const
maxIter = 100; { можешь поменять... }
Var
x,eps,U,Un:Real;
a:Byte;
...
U := 1; a := 2; Un := U*Cos(x/a);
for i := 1 to maxIter Do Begin
U := Un; Un := U*Cos(x/a);
a := a*2;
{ Как только stop станет равным True, остаток цикла пройдет вхолостую... }
if (Abs(Un - U) < eps) then break; // используем прерывание цикла
End;
...
...
U := 1; a := 2; Un := U*Cos(x/a);
for i := 1 to maxIter Do
U := Un; Un := U*Cos(x/a);
a := a*2;
if (Abs(Un - U) < eps) then break; // используем прерывание цикла
End;
...
for i:=1 to 1 do
begin
<делаем что-нить>
if not(<уловие выхода>) then x:=0;
end;