Почему данная программа выводит в списке в цикле в том числе и строку, где t=110? Ведь в условии цикла сказано - while t<st, st=103, т.е. должно
10-11 класс
|
выполняться, пока 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.
Попробуй искусственно уменьшить st в условии цикла. В начале цикла t было 100, цикл начал выполняться, к t прибавилось 10 и в списке вывелось такое значение
while (t + th < st) and (vgor < vorbit) and (h >= 0) do
Другие вопросы из категории
кодировке КОИ-8, в 2-байтную кодировку Unicode. На сколько бит увеличилась длина сообщения?
Читайте также
массиве. Результаты сохранить в одномерном массиве и элементы массива отсортировать по возрастанию Даны три одномерных массива. Упорядочить их по возрастанию элементов. Составить программу проверки, сколько раз повторяется заданное число в каждом массиве. Результаты сохранить в одномерном массиве и элементы массива отсортировать по возрастанию
написать программу, которая отвечает на вопрос " существуют ли два последовательных числа, не превосходящих N, сумма цифр каждого из которых делится на k?"
Входные данные: Два числа N(1<=N<=10000000000),k (1<=k<=100)
Выходные данные: Программа выводит два таких числа, если они существуют,"NO"- если нет.
расстоянии N метров, его охотничья собака Гайзарда заметила зайца. Через какое время она догонит его если скорость зайца V1 м / с, а скорость собаки V2 м / с? Следует отметить, что Гайзарда бегает быстрее любого зайца.
Входные данные:
Программа на вход получает три целых числа N, V1, V2 (0 ≤ N ≤ 103, 0 <V1, V2 <20).
Выходные данные:
Программа должна вывести время за собака догонит зайца с точностью до сотых.
а)удвоенное значение числа,если число положительное; б)абсолютное значение числа,если число отрицательное.
2)Напишите программу которая анализирует введенное с клавиатуры число на четность и сообщает о результате.
Ничего из вышеперечисленного.
Бесконечный цикл: Можно остановить путем ввода данных пользователем; Приводит к останову программы Можно использовать для создания короткой паузы в выполнении программы; Приводит к повторению некоторой части программы, пока не будет нажата клавиша “СТОП”.
Можно организовать цикл, повторяющийся до тех пор, пока не выполнится логическое условие с помощью операторов: FOR … NEXT IF… THEN GOTO Все вышеперечисленное.
Содержащаяся одна в другой циклические структуры называются: Вложенными; Простыми; Последовательными; Ничего из вышеперечисленного.
Какая из следующих строк может быть начальной строкой цикла FOR…NEXT: FOR A$=1 TO 15 FOR A=1 TO 15 FOR A=1 TO=15 FOR 4A=1 TO 15
Цикл FOR…NEXT приводит к повторению некоторой части программы, которая носит название: Тело цикла; Глубина цикла; Параметр цикла; Приращение.