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

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

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

 
 Ответить  Открыть новую тему 
> задачи на графику, я переделала закрытую тему в новую по правилам...
сообщение
Сообщение #1





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

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


Помогите пожалуйста! надо составить програмки!!!тема-полет тела брошенного к горизонту!!!!
1)составить программку, на которойи было бы: в левом углу торчит пушка, нарисована горизонтальная линия(на этой линии пушка как раз и стоит). Из ствола пушки летит точка(или снаряд,или снежинка или что-нибудь подобное!)и падает на линию пролетев какое-то определённое расстояние, и на экране должна быть видна траетория движения снаряда!!!
2)составить программку, на которойи было бы: в левом углу торчит пушка, нарисована горизонтальная линия(на этой линии пушка как раз и стоит). Из ствола пушки летит точка(или снаряд,или снежинка или что-нибудь подобное!) и должна попасть в цель(цель в виде или прямоугольника или дома или машины или чего-либо другого) которая находится на некотором расстоянии от пушки!!!надо подобрать для этого правильные значения!!!При попадании снаряда в целя, цель должна всячески сигнализировать об этом(мигать, должны быть волны какие-нибудь около цели, и чтобы компьютер пищал!!!)
3)Создать игру-дуэль двух пушек(на двоих) условия те же что и в пердыдущих прогах!!!
4)lпри каком угле самая боьшая дальность полета?почему???
При составлении программ надо использовать:
Код
g=9.8
v(x)=v(nacalnaya)*cosb { косинус угла b=cosb}
v(y)=v(nacalnaya)*sinb {синус угла b=sinb}
a(t)=-g
v(t)=-g*t+constanta
при t=(0) следует что v(0)=v(nacalnaya)
Constanta=v(nacalnaya)
v(t)=v(nacalnaya)-g*t
s(t)=v(nacalnaya)*t-(g*t*t)/2 + constanta
s(0)=0 значит constanta=s(0)=0
s(t)=v(nacalnaya)*t-(g*t*t)/2
при t=0 следуетv(0)=v(nacalnaya)
Составим систему уравнений:
y=v(nacalnaya)*sinb*t-(g*t*t)/2
x=v(nacalnaya)*cosb*t

В некоторой точке B (посередине траетории0, где тело находится на самой большой высоте и после этого начинает падать) V(y)=0, вычислим t, значит t=(2*v(nacalnaya))/g.
Подставим это значение t в формулу x=v(nacalnaya)*cosb*t , значитx=(2*v(nacalnaya)*v(nacalnaya)*cosb)/g
также надо использовать в проге: X:=round(x) и while t<=(2*v(nacalnaya))/g do
нЕ забудьте градусы углов перевести в радианы!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

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

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


Не помню, откуда взял.
Попробуйте переделать под себя.
Код
program polet;
uses
  crt,graph;
var
  mashtab_x,mashtab_y,t_dv,s,y_max,H,L,Vx,Vy,v0,alfa,m,V:real;
  i,grDriver,grMode,x,y:integer;
  text,text2:string;
const
  K=10;
  g=9.81;
  dT=0.001;

procedure paint(x,y,color:integer); {Рисование тела}
begin
  setcolor(color);
  circle(x,y,2);
end;

procedure razmetka; {Разметка экpана}
var
  i,j:integer;
  text:string;
begin
  setcolor(15); {Установка цвета(белового)}
  line(0,getmaxy,getmaxx,getmaxy);
  line(0,getmaxy,0,0);
  i:=0;
  while i<=round(GetMaxX/mashtab_x) do
    begin
      inc(j);
      line(i,getmaxy,i,475);
      moveto(i-10,465);
      if odd(j) then
        begin
          str(round((i/mashtab_x)),text);
          OutText(text);
        end;
      inc(i,round(100*mashtab_x));
     end;
   i:=0;
   j:=0;
   while i<=round(GetMaxY/mashtab_y) do
     begin
       inc(j);
       line(0,getmaxy-i,5,getmaxy-i);
       moveto(10,getmaxy-i-3);
       if odd(j) then
         begin
           str(round((i/mashtab_y)),text);
           OutText(text);
         end;
       inc(i,round(100*mashtab_y));
      end;
      moveto(5,getmaxy-10);
      OutText('0');
    end;

procedure getmashtab; {Установка масштаба}
begin
  mashtab_x:=1;
  mashtab_y:=1;
  if (s>GetMaxX) then
    begin
      mashtab_x:=GetMaxX/round(s);
      if y_max>GetMaxY then
        mashtab_y:=GetMaxY/round(y_max);
    end
  else
   if y_max>GetMaxY then
     begin
       mashtab_y:=GetMaxY/round(y_max);
     end
end;

procedure info;
var
  text,text2,text3:string;
begin
  setfillstyle(0,black);
  bar(400,0,GetMaxX,40);
  setcolor(15);
  str(trunc(V),text);
  text2:='Скоpость '+text;
  outtextxy(400,10,text2);
  str(trunc(L),text);
  str(trunc(H),text2);
  text3:='Длина '+text+' Высота '+text2;
  outtextxy(400,20,text3);
end;

begin
  clrscr;

  writeln('‚ўҐ¤ЁвҐ ­ з «м­го бЄ®а®бвм (¬/б):');
  readln(v0);
  WriteLn('‚ўҐ¤ЁвҐ гЈ®« ўлбв५  (0-90 Ја ¤гб®ў): ');
  readln(alfa);
  WriteLn('‚ўҐ¤ЁвҐ ¬ ббг б­ ап¤ : ');

  readln(m);
  m:=m*1000; {Пpеобpаование массы в гpаммы}

  alfa:=(alfa*PI)/180; {Пpеобpазование гpадусов в pадианы}
  t_dv:=(2*v0*sin(alfa))/g; {Пpимеpное вpемя движения}
  s:=((v0*v0)/g)*sin(2*alfa); {Максимального pасстояния}
  y_max:=(sqr(v0)*sqr(sin(alfa)))/(2*g); {Максимальная высота}


  Vx:=v0*cos(alfa); {Скоpость по оси OX}
  Vy:=v0*sin(alfa); {Скоpость по оси OY}
  L:=0; {Hачальные кооpдината X}
  H:=0; {Hачальные кооpдината Y}

  Writeln('Вpемя движения: ',t_dv:5:2);
  writeln('Максимальное pасстояние: ',s:5:2);
  writeln('Максимальная высота: ',y_max:5:2);
  readln;

  detectgraph(grDriver,grMode); {Установка гpафического pежима}
  initgraph(grDriver,grMode,'');

getmashtab; {Усиановка масштаба}

razmetka; {Пpоцедуpа pазметки экpана}
while (H>=0) do {Движение тела}
begin
paint(x,y,0); {Стиpание наpисованного тела}
if i=500 then begin razmetka; info; i:=0; end; {Пеpеpазметка}
H:=H+Vy*dT; {Расчёт высоты}
L:=L+Vx*dT; {Расчёт пpойденного pастояния}
V:=sqrt(sqr(Vx)+sqr(Vy));
Vx:=Vx-K*Vx/V/M*dT;
Vy:=Vy-(g+K*Vy/V/M)*dT;
x:=round(L*mashtab_x); {Получение кооpдинаты X}
y:=round(GetMaxY-(H*mashtab_y)); {Получение кооpдинаты Y}
paint(x,y,4); {Рисование тела}
inc(i);
{delay(50); {Задеpжка}
end;

razmetka;

setcolor(4);
if (GetMaxX-x)>75 then begin
Line(x,y,x+30,y-30);
Line(x+30,y-30,x+75,y-30);
str(trunc(s),text);
text2:='S='+text;
OutTextXY(x+35,y-40,text2);
end
else
begin
Line(x,y,x-30,y-30);
Line(x-30,y-30,x-75,y-30);
str(trunc(s),text);
text2:='S='+text;
OutTextXY(x-75,y-40,text2);
end;

repeat until keypressed; closegraph;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 27.04.2024 17:21
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name