1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
| xlr8 |
2.06.2007 11:45
Сообщение
#1
|
|
Новичок ![]() Группа: Пользователи Сообщений: 22 Пол: Мужской Репутация: 0 |
Собственно написал вот такую программу. Шарик движется линейно между точками (x[i],y[i])..
А вопрос то - помогите алгоритмом работы такой программы, только с использованием динамического списка этих самых точек. Объясните,пожалуйста, каким способом обращатся к данным из (как я понимаю) динамического списка записей. Заранее спасибо. Сообщение отредактировано: xlr8 - 2.06.2007 11:47 |
![]() ![]() |
| xlr8 |
2.06.2007 20:09
Сообщение
#2
|
|
Новичок ![]() Группа: Пользователи Сообщений: 22 Пол: Мужской Репутация: 0 |
Просмотрите...правильно ли я всё сделал? (программа работает конечно)
Код Uses Graph,Crt,My; Const N=10000; Type point=^tpoint; tpoint=record x:real; y:real; next:point; end; Var Dot:array[1..N] of point; output:text; i:integer; x,y:real; procedure draw; Var a,b,c:real; begin Init_graph; for i:=1 to N do begin with Dot[i]^ do begin PutPixel(round(x),round(y),red); next:=Dot[i+1]; end; end; readkey; for i:=1 to N-1 do begin x:=Dot[i]^.x; if Dot[i]^.x<Dot[i+1]^.x then begin repeat x:=x+1; a:=x*Dot[i+1]^.y-x*Dot[i]^.y-Dot[i]^.x*Dot[i+1]^.y+Dot[i]^.x*Dot[i]^.y; b:=Dot[i+1]^.x*Dot[i]^.y-Dot[i]^.x*Dot[i]^.y; c:=Dot[i+1]^.x-Dot[i]^.x; y:=(a+b)/c; Drawcircle(round(x),round(y),green); delay(300); Drawcircle(round(x),round(y),black); until x>=Dot[i+1]^.x; end else begin repeat x:=x-1; a:=x*Dot[i+1]^.y-x*Dot[i]^.y-Dot[i]^.x*Dot[i+1]^.y+Dot[i]^.x*Dot[i]^.y; b:=Dot[i+1]^.x*Dot[i]^.y-Dot[i]^.x*Dot[i]^.y; c:=Dot[i+1]^.x-Dot[i]^.x; y:=(a+b)/c; Drawcircle(round(x),round(y),green); delay(300); Drawcircle(round(x),round(y),black); until x<=Dot[i+1]^.x; end; end; Dispose(Dot[i]); end; {main program} BEGIN clrscr; randomize; for i:=1 to N do begin New(Dot[i]); with Dot[i]^ do begin x:=round(random(640)); {writeln(Dot[i]^.x:4:0);} y:=round(random(480)); {writeln(Dot[i]^.y:4:0);} next:=nil; end; end; readkey; draw; readkey; END. |
xlr8 Динамический список координат 2.06.2007 11:45
Ozzя Тут прочитал как решать товю задачу? 2.06.2007 13:17
xlr8 Будем разбиратся..Спасибо 2.06.2007 18:48
Артемий Извини, а можно присоеденить модуль My? А то знаеш... 2.06.2007 20:15
volvo xlr8, динамический список где? Массив вижу, списка... 2.06.2007 20:32
xlr8 Вот модуль My..но он совсем не суть..
volvo, задан... 2.06.2007 21:47
volvo И динамического массива здесь тоже нет... Понимаеш... 2.06.2007 22:07
xlr8
Uses Graph,Crt,My;
Type
point=^tpoint;
tp... 3.06.2007 9:54
Чужак Вопрос: обязательно использовать массивы,
файлы, д... 3.06.2007 12:55
xlr8 Задачу нужно решить применив двунаправленый список... 5.06.2007 18:21
volvo Вот набросок:
uses crt, graph;
type
plist = ^tli... 5.06.2007 18:56
xlr8 Спасибо огромное! :) 5.06.2007 20:12
xlr8
procedure delete_elem(i:byte);
var
nav,p1,p2... 14.06.2007 8:49
volvo Может, в том, что элементы считаются у тебя с НУЛЯ... 14.06.2007 8:54![]() ![]() |
|
Текстовая версия | 8.12.2025 22:14 |