![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
CHELovek |
![]()
Сообщение
#1
|
![]() Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
Есть такое задание:
’’Составить укрупненный алгоритм и программу на языке высокого уровня для решения задачи по своему варианту. Язык программирования 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. |
![]() ![]() |
![]() |
Текстовая версия | 25.07.2025 6:39 |