![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
xlr8 |
![]() ![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 22 Пол: Мужской Репутация: ![]() ![]() ![]() |
Собственно написал вот такую программу. Шарик движется линейно между точками (x[i],y[i])..
А вопрос то - помогите алгоритмом работы такой программы, только с использованием динамического списка этих самых точек. Объясните,пожалуйста, каким способом обращатся к данным из (как я понимаю) динамического списка записей. Заранее спасибо. Сообщение отредактировано: xlr8 - 2.06.2007 11:47 |
![]() ![]() |
xlr8 |
![]()
Сообщение
#2
|
Новичок ![]() Группа: Пользователи Сообщений: 22 Пол: Мужской Репутация: ![]() ![]() ![]() |
Просмотрите...правильно ли я всё сделал? (программа работает конечно)
Код 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. |
![]() ![]() |
![]() |
Текстовая версия | 24.06.2025 13:13 |