IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Задача про движение в пространстве
CHELovek
сообщение 10.01.2005 18:25
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


Есть такое задание:

’’Составить укрупненный алгоритм и программу на языке высокого уровня для решения задачи по своему варианту. Язык программирования 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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 25.07.2025 6:39
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"