Рассматриваем движение тела, брошенного под углом к горизонту без начального ускорения. Уравнения движения тела в осях координат известны из физики: Также известна формула для определения времени движения тела до его падения (т.е. возвращения на исходную высоту, которая совпадает с осью X): Считаем, что в начальных условиях задается количество точек, в которых нужно найти значения пути пройденного в осях координат.
uses Crt; const g=9.81; pi=3.14; var alpha,ar,v0,t,x,y,tmax,ht,v0x,v0y:real; n:integer; begin ClrScr; Write('Vvedite alpha, v0: '); Read(alpha,v0); Write('Chislo tochek= '); Read(n); ar:=pi*alpha/180; v0x:=v0*cos(ar); v0y:=v0*sin(ar); tmax:=2*v0*sin(ar)/g; ht:=tmax/n; t:=ht; while t<=tmax do begin x:=v0x*t; y:=v0y*t-g*sqr(t)/2; Writeln('t=',t:6:3,' x=',x:8:3,' y=',y:8:3); t:=t+ht end; ReadKey end.
// Напишите программу, которая в последовательности натуральных чисел определяет количество //чисел, кратных 3. Программа получает на вход количество чисел в //последовательности, а затем сами числа. В последовательности всегда имеется число, //кратное 3. Количество чисел не превышает 100. Введённые числа не превышают 300. //Программа должна вывести одно число - количество чисел, кратных 3.
Var i,j,x :word; n :integer; begin writeln('Введите количество цифр в последовательности'); Readln (j); if j>100 then //Проверка накличество чисел в последовательности begin writeln ('По условия задачи цифр не должно быть более 100'); writeln ('Введите количесво цифр еще раз'); readln (j); end; for i:=1 to j do begin Writeln ('Введите ',i,' число'); readln (n); if n>300 then //проверка максимального значения числа begin writeln ('Данное число не удовлетворяет условиям задачи (>300'); writeln ('Введите его еще раз'); readln (n); end; n:= n mod 3; if n=0 then x:=x+1; end; Writeln ('Количество чисел, кратных 3:'); Writeln (x); end.
Также известна формула для определения времени движения тела до его падения (т.е. возвращения на исходную высоту, которая совпадает с осью X):
Считаем, что в начальных условиях задается количество точек, в которых нужно найти значения пути пройденного в осях координат.
uses Crt;
const
g=9.81;
pi=3.14;
var
alpha,ar,v0,t,x,y,tmax,ht,v0x,v0y:real;
n:integer;
begin
ClrScr;
Write('Vvedite alpha, v0: ');
Read(alpha,v0);
Write('Chislo tochek= ');
Read(n);
ar:=pi*alpha/180;
v0x:=v0*cos(ar);
v0y:=v0*sin(ar);
tmax:=2*v0*sin(ar)/g;
ht:=tmax/n;
t:=ht;
while t<=tmax do
begin
x:=v0x*t; y:=v0y*t-g*sqr(t)/2;
Writeln('t=',t:6:3,' x=',x:8:3,' y=',y:8:3);
t:=t+ht
end;
ReadKey
end.
Тестовое решение:
Vvedite alpha, v0: 45 126.4
Chislo tochek= 10
t= 1.821 x= 162.864 y= 146.461
t= 3.643 x= 325.728 y= 260.375
t= 5.464 x= 488.592 y= 341.742
t= 7.286 x= 651.456 y= 390.562
t= 9.107 x= 814.320 y= 406.836
t=10.929 x= 977.184 y= 390.562
t=12.750 x=1140.048 y= 341.742
t=14.572 x=1302.912 y= 260.375
t=16.393 x=1465.776 y= 146.461
t=18.215 x=1628.640 y= 0.000
//чисел, кратных 3. Программа получает на вход количество чисел в
//последовательности, а затем сами числа. В последовательности всегда имеется число,
//кратное 3. Количество чисел не превышает 100. Введённые числа не превышают 300.
//Программа должна вывести одно число - количество чисел, кратных 3.
Var i,j,x :word;
n :integer;
begin
writeln('Введите количество цифр в последовательности');
Readln (j);
if j>100 then //Проверка накличество чисел в последовательности
begin
writeln ('По условия задачи цифр не должно быть более 100');
writeln ('Введите количесво цифр еще раз');
readln (j);
end;
for i:=1 to j do
begin
Writeln ('Введите ',i,' число');
readln (n);
if n>300 then //проверка максимального значения числа
begin
writeln ('Данное число не удовлетворяет условиям задачи (>300');
writeln ('Введите его еще раз');
readln (n);
end;
n:= n mod 3;
if n=0 then x:=x+1;
end;
Writeln ('Количество чисел, кратных 3:');
Writeln (x);
end.