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

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

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

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


Гость






Надо построить модель полета снаряда с исходными данными скорость и угол стрельбы. Начальная высота нулевая. Графиков может быть несколько, причем ввод очередной двойки (скорость, угол) производится уже при нарисованых предыдущих графиках.
Заранее благодарна smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Смотрю...
*****

Группа: Пользователи
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

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


Надо бы вспомнить формулы...
Случайно не знаете? ;)


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Vila
Вот тут была решена похожая задачка - только без графики... Формулы можно взять оттуда.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Смотрю...
*****

Группа: Пользователи
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

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


Я тут еще нашел:
http://www.examens.ru/otvet/11/9/814.html


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






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.

 К началу страницы 
+ Ответить 
сообщение
Сообщение #6





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

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


В программке меня беспокоят две вещи:
1) while true
2) until false

А товарищу APAL, дабы усложнить задачу поиска всяких ссылок, советую попробовать ввести в задачу ветер переменного направления и силы (во время полёта снаряда).

Кстати, есть отличный образчик программки со снарядами, визуализация отличная. Scorched Earth называется. Ходят слухи, что на паскале написана.
Кто-то, типа, даже исходники видел.

Я думаю, ноги этой задачки лежат в бурном Scorch-детстве препода. smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Цитата
В программке меня беспокоят две вещи: 1) while true 2) until false


Таким способом я заставляю программу выполняться до тех пор, пока не будут соблюдены нужные условия для выхода? По-Вашему, я должен эти условия всовывать в while и repeat ?

P.S. Почему, собственно, эти 2 вещи Вас беспокоят? Я вроде goto не использую... Напишите лучше ...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Спасибо Всем, сейчас координатные оси дорисую, и попробуем сдать...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9





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

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


Просто эстетствую smile.gif.
Неявное окончание условного цикла сродни GOTO.
Вообще-то, в данной задачке достаточно условий для того, чтобы построить квадратное уравнение.
t=2*(Vy/G)
x1=0
x2=t*Vx при y=0
ymax=t/2*Vy
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

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


Цитата
Неявное окончание условного цикла

ЧЕГО????
что значит неявное??
Условие или есть или его нет! Третьего не дано!
Всегда можно сделать трассировку на бумаге и сказать где будет конец цикла! :yes:


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11





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

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


Конструкция "repeat until false" абсолютно равнозначна "label: goto label", только код ещё осложнён ненужным сравнением. Выход из условного цикла при помощи иной конструкции (ex.: "if ... then break", "goto") называется неявным, и, на мой взляд, выглядит несимпатично.
Я, по работе, имею дело с большим количеством бумаги. Но даже мне становится жутко от трассировки, если t достигнет 100 и более. :D
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

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


Цитата
и, на мой взляд, выглядит несимпатично.

В любом случае, они, в отличии GOTO разрешены!


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Знаток
****

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

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


Цитата
В любом случае, они, в отличии GOTO разрешены!


А что, кто то что то вообще запрещает??? =))) хм.... GOTO паскалем не запрещен, и программисту могут тока сказать что не красиво но вот запретить...


--------------------
- Где я?
- Во тьме.
- В какой тьме?
- Во тьме твоего мозга.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14





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

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


Мне Pascal нравиться за то, что при соблюдении определённых правил написания, исходный текст программы имеет чёткую структуру и легко читается(на С быстрее писать, но читать хуже). При работе в команде это очень важно.
При решении задачи тоже.
Пора открывать новую тему - про "GOTO". smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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