Почему данная программа выводит в списке в цикле в том числе и строку, где t=110? Ведь в...

0 голосов
50 просмотров

Почему данная программа выводит в списке в цикле в том числе и строку, где t=110? Ведь в условии цикла сказано - while t103, почему цикл продолжает выполняться на этой строке и как этого избежать?


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 (t=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.


image

Информатика (4.8k баллов) | 50 просмотров
0

while (t + th < st) and (vgor < vorbit) and (h >= 0) do

Дан 1 ответ
0 голосов

Попробуй искусственно уменьшить st в условии цикла. В начале цикла t было 100, цикл начал выполняться, к t прибавилось 10 и в списке вывелось такое значение

(94 баллов)