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