Надо построить модель полета снаряда с исходными данными скорость и угол стрельбы. Начальная высота нулевая. Графиков может быть несколько, причем ввод очередной двойки (скорость, угол) производится уже при нарисованых предыдущих графиках. Заранее благодарна
APAL
9.11.2004 20:25
Надо бы вспомнить формулы... Случайно не знаете? ;)
volvo
9.11.2004 20:28
Vila Вот тут была решена похожая задачка - только без графики... Формулы можно взять оттуда.
Vila Посмотрите вот эту программку... Для значений Vo до 100 она работает... Если нужно, попробуйте поиграть с выводом точек...
uses Crt, Graph;
const G = 9.8; n = 2;
function getint(x, y: integer; s: string): integer; var st: string; err, a: integer; ch: char; begin setcolor(white); outtextxy(x, y, s); st := ''; repeat ch := readkey; if ch in [#8, '0'..'9'] then begin setcolor(black); outtextxy(x + textwidth(s), y, st); setcolor(white); if ch = #8 then begin if st <> '' then delete(st, length(st), 1) end else st := st + ch;
outtextxy(x + textwidth(s), y, st); end until ch = #13; val(st, a, err); getint := a end;
var grDriver, grMode, ErrCode: integer;
v0, a, x, y: real; t: real; i: integer; currcolor, px, py: integer; begin grDriver := Detect; initgraph( grDriver, grMode, '' ); ErrCode := GraphResult; if ErrCode <> grOk then begin writeln('Graphics error:', grapherrormsg(ErrCode)); halt(100) end;
currcolor := 0; while true do begin setviewport(0, 0, getmaxx, 40, false); clearviewport; setviewport(0, 0, getmaxx, getmaxy, false);
v0 := getint(5, 5, 'enter Vo '); a := getint(5, 20, 'enter A '); if v0 = 0 then break;
inc(currcolor); currcolor := (currcolor mod 10) + 1;
t := 0; repeat x := v0 * cos(a / (180/Pi)) * t; y := v0 * sin(a / (180/Pi)) * t - (G * sqr(t)/2);
px := trunc(x); py := trunc(y); putpixel(px, (getmaxy div 2) - py, currcolor); if (t > 0.01) and (y <= 0) then break;
t := t + 0.01; until false; end;
closegraph; end.
Rothmans
10.11.2004 6:09
В программке меня беспокоят две вещи: 1) while true 2) until false
А товарищу APAL, дабы усложнить задачу поиска всяких ссылок, советую попробовать ввести в задачу ветер переменного направления и силы (во время полёта снаряда).
Кстати, есть отличный образчик программки со снарядами, визуализация отличная. Scorched Earth называется. Ходят слухи, что на паскале написана. Кто-то, типа, даже исходники видел.
Я думаю, ноги этой задачки лежат в бурном Scorch-детстве препода.
volvo
10.11.2004 6:48
Цитата
В программке меня беспокоят две вещи: 1) while true 2) until false
Таким способом я заставляю программу выполняться до тех пор, пока не будут соблюдены нужные условия для выхода? По-Вашему, я должен эти условия всовывать в while и repeat ?
P.S. Почему, собственно, эти 2 вещи Вас беспокоят? Я вроде goto не использую... Напишите лучше ...
Vila
10.11.2004 13:01
Спасибо Всем, сейчас координатные оси дорисую, и попробуем сдать...
Rothmans
10.11.2004 18:14
Просто эстетствую . Неявное окончание условного цикла сродни GOTO. Вообще-то, в данной задачке достаточно условий для того, чтобы построить квадратное уравнение. t=2*(Vy/G) x1=0 x2=t*Vx при y=0 ymax=t/2*Vy
Altair
10.11.2004 22:51
Цитата
Неявное окончание условного цикла
ЧЕГО???? что значит неявное?? Условие или есть или его нет! Третьего не дано! Всегда можно сделать трассировку на бумаге и сказать где будет конец цикла! :yes:
Rothmans
12.11.2004 2:32
Конструкция "repeat until false" абсолютно равнозначна "label: goto label", только код ещё осложнён ненужным сравнением. Выход из условного цикла при помощи иной конструкции (ex.: "if ... then break", "goto") называется неявным, и, на мой взляд, выглядит несимпатично. Я, по работе, имею дело с большим количеством бумаги. Но даже мне становится жутко от трассировки, если t достигнет 100 и более. :D
Altair
12.11.2004 11:02
Цитата
и, на мой взляд, выглядит несимпатично.
В любом случае, они, в отличии GOTO разрешены!
Dark
12.11.2004 13:02
Цитата
В любом случае, они, в отличии GOTO разрешены!
А что, кто то что то вообще запрещает??? =))) хм.... GOTO паскалем не запрещен, и программисту могут тока сказать что не красиво но вот запретить...
Rothmans
12.11.2004 15:28
Мне Pascal нравиться за то, что при соблюдении определённых правил написания, исходный текст программы имеет чёткую структуру и легко читается(на С быстрее писать, но читать хуже). При работе в команде это очень важно. При решении задачи тоже. Пора открывать новую тему - про "GOTO".
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.