’’Составить укрупненный алгоритм и программу на языке высокого уровня для решения задачи по своему варианту. Язык программирования TPascal.
В текстовом файле имеются данные для N воздушных целей, определенных станцией слежения в момент времени T0
alpha(i)-направление движения, V гор(i) - гор. скорость, V вер(i) - верт. скорость, phy(i) - азимут, H(i) - высота,L(i) - расстояние до цели (гориз.)
(число целей заранее не известно)
Параметры движения постоянны. Составить программу для расчета траектории движения целей и определения величин, указанных в таблице для своего варианта.
Программа должна визуализировать начальное положение целей и траекторию их движения, а также основные показатели целей, включая расчетные значения по своему варианту’’
Составил я прогу, которая задает цели и их параметры. Другая прога рисует еллипс (типа радар) рисует цели (пользовался полярными координатами)... но стопор состоит в том, что не могу их заставить двигаться =0)
Вот то, что я намонстрячил:
1. Задаю количество целей и их параметры
Код
program zadanie_znacheniy;
var
kc, counter: integer;
alpha, vgor, vver, phy, h, l: word;
kcfile: text;
znfile: text;
begin
randomize;
writeln('Vvedite kolichestvo celey'); readln(kc);
counter:=1;
assign(kcfile, 'kc.dat');
assign(znfile, 'zn.dat');
rewrite(kcfile);
writeln(kcfile, kc);
close(kcfile);
while counter<=kc do
begin
alpha:=random(361);
vgor:=random(101);
vver:=random(101);
phy:=random(361);
h:=random(501);
l:=random(201);
if counter=1 then
begin
rewrite(znfile);
close(znfile);
end;
append(znfile);
writeln(znfile,alpha,' ',vgor,' ',vver,' ',phy,' ',h,' ',l);
close(znfile);
counter:=counter+1;
end;
end.
2. А эта прога должна данные обработать... после строчки {PALEVO случился заворот мозгов :ypr:
Код
program obrabotka;
uses CRT, Graph;
var
alpha, vgor, vver, phy, h, l: array [1..200] of word;
napr, xg, yg, x, y, y1, y2, dx0, dy0, dx, dy: array [1..200] of integer;
gd, gm, kc, co, c, t, tt, h0, rx, ry: integer;
kcfile, znfile: text;
vv, vg: array [1..200] of real;
yr, xr: string;
const
mn=0.4;
nm=0.1;
procedure znacheniya;
begin
co:=1;
assign(kcfile, 'kc.dat');
assign(znfile, 'zn.dat');
reset(kcfile);
read(kcfile,kc);
close(kcfile);
reset(znfile);
while co<=kc do
begin
read(znfile,alpha[co],vgor[co],vver[co],phy[co],h[co],l[co]);
vg[co]:=vgor[co]*nm;
vv[co]:=vver[co]*nm;
if alpha[co]>0 then if alpha[co]<90 then napr[co]:=1;
if alpha[co]>90 then if alpha[co]<180 then napr[co]:=2;
if alpha[co]>180 then if alpha[co]<270 then napr[co]:=3;
if alpha[co]>270 then if alpha[co]<360 then napr[co]:=4;
if alpha[co]=90 then napr[co]:=10;
if alpha[co]=180 then napr[co]:=20;
if alpha[co]=270 then napr[co]:=30;
if alpha[co]=360 then napr[co]:=40;
if alpha[co]=0 then napr[co]:=40;
co:=co+1;
end;
close(znfile);
end;
begin
znacheniya;
h0:=h[1];
gd:=detect;
gm:=2;
InitGraph(gd, gm, '.');
setbkcolor(black);
setcolor(7);
ry:=getmaxy; rx:=getmaxx;
ellipse(rx div 2, ry-(ry div 4), 0, 360 ,230 ,230 div 6);
setcolor(6);
line(rx div 2, ry-(ry div 3), rx div 2, ry-(ry div 6));
line(0, ry-(ry div 4), rx, ry-(ry div 4));
co:=1;
while co<=kc do
begin
c:=9;
if h[co]>=h[1] then
begin
if h[co]<h[1]+300 then
begin
c:=9;
c:=c+5;
dx[co]:=round(l[co]*sin(phy[co]));
dy[co]:=round(l[co]*cos(phy[co]));
x[co]:=dx[co];
y[co]:=round(dy[co]/6);
xg[co]:=(rx div 2)+x[co];
y1[co]:=ry-(ry div 4)+y[co];
yg[co]:=y1[co]-round(mn*h[co]);
setcolor(2);
line(xg[co], y1[co], xg[co], yg[co]);
end;
end;
dx0[co]:=round(l[co]*sin(phy[co]));
dy0[co]:=round(l[co]*cos(phy[co]));
x[co]:=dx0[co];
y[co]:=round(dy0[co]/6);
xg[co]:=(rx div 2)+x[co];
y1[co]:=ry-(ry div 4)+y[co];
yg[co]:=y1[co]-round(mn*h[co]);
if co=1 then
begin
c:=11;
dx0[co]:=round(l[co]*sin(phy[co]));
dy0[co]:=round(l[co]*cos(phy[co]));
x[co]:=dx0[co];
y[co]:=round(dy0[co]/6);
yg[co]:=y1[co]-round(mn*h[co]);
end;
putpixel(xg[co], yg[co], c);
co:=co+1;
end;
{PALEVO...
while t<>120 do
begin
while co<=kc do
begin
if napr[co]=1 then
begin
dx[co]:=round(l[co]*sin(alpha[co])+vg[co]*t);
dy[co]:=round(l[co]*cos(alpha[co])-vv[co]*t);
end;
if napr[co]=2 then
begin
dx[co]:=round(l[co]*sin(alpha[co])+vg[co]*t);
dy[co]:=round(l[co]*cos(alpha[co])+vv[co]*t);
end;
if napr[co]=3 then
begin
dx[co]:=round(l[co]*sin(alpha[co])-vg[co]*t);
dy[co]:=round(l[co]*cos(alpha[co])+vv[co]*t);
end;
if napr[co]=4 then
begin
dx[co]:=round(l[co]*sin(alpha[co])-vg[co]*t);
dy[co]:=round(l[co]*cos(alpha[co])-vv[co]*t);
end;
if napr[co]=10 then
begin
dx[co]:=round(l[co]*sin(alpha[co])-vg[co]*t);
dy[co]:=round(l[co]*cos(alpha[co])-vv[co]*t);
end;
if napr[co]=20 then
begin
dx[co]:=round(l[co]*sin(alpha[co])+vg[co]*t);
dy[co]:=round(l[co]*cos(alpha[co])+vv[co]*t);
end;
if napr[co]=30 then
begin
dx[co]:=round(l[co]*sin(alpha[co])+vg[co]*t);
dy[co]:=round(l[co]*cos(alpha[co])+vv[co]*t);
end;
if napr[co]=40 then
begin
dx[co]:=round(l[co]*sin(alpha[co])+vg[co]*t);
dy[co]:=round(l[co]*cos(alpha[co])+vv[co]*t);
end;
xg[co]:=(rx div 2)+dx[co];
y2[co]:=ry-(ry div 4)+round(dy[co]/6);
yg[co]:=y2[co]-round(mn*h[co]);
line(xg[co], y2[co], xg[co], yg[co]);
putpixel(xg[co], yg[co], c);
co:=co+1
end;
co:=1;
t:=t+1
end;
}
repeat until keypressed;
CloseGraph;
end.