Почему данная программа выводит в перечне в цикле в том числе

Почему данная программка выводит в списке в цикле в том числе и строчку, где t=110? Ведь в условии цикла сказано - while tlt;st, st=103, т.е. должно производиться, пока t будет меньше 103, т.е. до 100 включительно (шаг t=10). t=110gt;103, почему цикл продолжает производиться на этой строке и как этого избежать?


program s1;
uses crt;
const Gk=6.67E-11; M=6E+24; R=6371E+3;
var st, th, g, t, h, vorbit, vvert, vgor:real;
x, i:integer;
al, tl, A: array of real;
function rad(Angle:real):real;
var Ak:real;begin
Ak:=(3.14*Angle)/180;
rad:=Ak;
end;
begin
th:=10;setlength (al, 3);
setlength (tl, 3);
setlength (A,3);
al[1]:=40;
tl[1]:=103;
A[1]:=45;
al[2]:=50;
tl[2]:=40;
A[2]:=45;

t:=0;
h:=0;
vvert:=0;
vgor:=0;
g:=(Gk*M)/(R*R);
vorbit:=sqrt((Gk*M)/R);

i:=0;
st:=0;
i:=i+1;
st:=st+tl[1];
while (tlt;st) and (vgorlt;vorbit) and (hgt;=0) do
begin
t:=t+th;
h:=h+(vvert*th)+(0.5*al[1]*sin(rad(A[1]))*th*th)-(0.5*g*th*th); vvert:=vvert+al[1]*sin(rad(A[1]))*th-g*th;
vgor:=vgor+al[1]*cos(rad(A[1]))*th;
g:=(Gk*M)/((R+h)*(R+h));
vorbit:=sqrt((Gk*M)/(R+h));
writeln ('1 cycle t=' ,t:1:2, ' h=', h:1:2, ' g=', g:1:2, ' vvert=', vvert:1:2, ' vgor=', vgor:1:2, ' vorbit=', vorbit:1:2);
end;
end.

Задать свой вопрос
Анатолий Борзецовский
while (t + th < st) and (vgor < vorbit) and (h >= 0) do
1 ответ
Пробуй искусственно уменьшить st в условии цикла. В начале цикла t было 100, цикл начал выполняться, к t прибавилось 10 и в перечне вывелось такое значение
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт