L
TL = ------------ - L аралықты үшіп өту үшін уақыт
V0 · cos
1. Шұңқыршақ енін және оған дейінгі қашықтықты біле отырып, допқа бастапқы жылдамдығы мен лақтыру бұрышын бере оты- рып «Допты шұңқырға түсіру» ойнын модельдеу.
program dop;
uses crt,graph;
const
n=100; r=5; g=9.81;
var
dd, rr:integer;
x0, y0, mx, my, x1, y1, z:integer;
v0, alf, l, dl, tmax, lmax, t, dt:real;
function x(t:real):real;
begin
x:=v0*t*cos(alf)
end;
function y(t:real):real;
begin
y:=v0*sin(alf)*t-g*t*t/2
end;
begin
clrscr;
randomize;
l:=random(50)+50;
dl:=random(5)+10;
writeln('rasstoyanie do lunki:',l:4:0);
writeln('shirina lunki:',dl:4:0);
write('vvedite nach. skorost broska (ot 0 do 50):');
readln(v0);
write('vvedite ugol naklona (v gradusah ot 0 do 90):');
readln(alf);
alf:=alf*pi/180;
dd:=detect; initgraph(dd,rr,'c:\bp\doc\bgi');
x0:=10; y0:=400; mx:=5; my:=5;
line(x0,y0,round(l*mx+x0),y0);
arc(round((l+dl/2)*mx+x0),y0,180,360,round(dl/2*mx));
line(round((l+dl)*mx+x0),y0,getmaxx,y0);
tmax:=2*v0*sin(alf)/g;
lmax:=v0*v0*sin(2*alf)/g;
t:=0; dt:=tmax/n; z:=2000-round(1000*v0/50);
while tbegin
x1:=round(x(t)*mx+x0); y1:=round(y0-y(t)*my);
setcolor(15); circle(x1,y1,r);
delay(z);
setcolor(0); circle(x1,y1,r);
t:=t+dt
end;
setcolor(15);
circle(x1,y1,r);
if lmaxthen outtext(' nedolet')
else if lmax>l+dl
then outtext(' perelet')
else outtext(' popadanie');
repeat until keypressed;
closegraph
end.
2. Баған биіктігінен және оған дейінгі қашықтықты біле отырып, допқа бастапқы жылдамдығы мен лақтыру бұрышын бере оты- рып « Допты бағанаға тигізу» ойнын модельдеу
program dop1;
uses crt, graph;
const n=100; r=5; g=9.81;
var dd,rr:integer;
x0,y0,mx,my,x1,y1,z:integer;
v0,alf,l,hs,h,tmax,ts,tp,t,dt:real;
function x(t:real):real;
begin
x:=v0*t*cos(alf)
end;
function y(t:real):real;
begin
y:=v0*sin(alf)*t-g*t*t/2
end;
begin clrscr;
randomize;
l:=random(50)+50;
hs:=random(40)+10;
writeln('Rasstoyanie do stenki:',l:4:0);
writeln('Visota stenki:',hs:4:0);
write('Vvedite nash. skorost broska (ot 0 do 50):');
readln(v0);
write('Vvedite ugol naklona (ot 0 do 90):');
readln(alf);
alf:=alf*pi/180;
dd:=detect; initgraph(dd,rr,'c:\bp\doc\bgi');
x0:=10; y0:=400; mx:=5; my:=5;
line(x0,y0,getmaxx,y0);
rectangle(round(l*mx+x0),y0,round((l+1)*mx+x0),
round(y0-hs*my));
tmax:=2*v0*sin(alf)/g;
ts:=l/(v0*cos(alf));
h:=l*sin(alf)/cos(alf)-g*l*l/(2*v0*v0*cos(alf)*cos(alf));
if tmaxthen tp:=tmax
else if hs>=h
then tp:=ts
else tp:=tmax;
t:=0; dt:=tmax/n; z:=2000-round(1000*v0/50);
while tbegin
x1:=round(x(t)*mx+x0); y1:=round(y0-y(t)*my);
setcolor(15); circle(x1,y1,r);
delay(z);
setcolor(0); circle(x1,y1,r);
t:=t+dt;
end;
setcolor(15);
circle(x1,y1,r);
if tmaxthen outtext(' Nedolet')
else if h>hs
then outtext(' Perelet')
else outtext(' Popodanie');
repeat until keypressed;
closegraph end.
Достарыңызбен бөлісу: |