Почему данная программа выводит в списке в цикле в том числе и строку, где t=110? Ведь в условии цикла сказано - while t<st, st=103, т.е. должно выполняться, пока t будет меньше 103, т.е. до 100 включительно (шаг t=10). t=110>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 (t<st) and (vgor<vorbit) and (h>=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.
Please enter comments
Please enter your name.
Please enter the correct email address.
You must agree before submitting.

Answers & Comments


Copyright © 2024 SCHOLAR.TIPS - All rights reserved.