![]() |
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; Type point=^tpoint; tpoint=record x:real; y:real; next:point; end; Var first:point; place:point; output:text; k,i:integer; x,y:real; procedure draw(first:point); Var a,b,c:real; r:point; begin Init_graph; place:=first; while place<>nil do begin Drawcircle(round(place^.x),round(place^.y),red); place:=place^.next; end;} place:=first; while (place^.next<>nil) do begin y:=0; x:=place^.x; r:=place^.next; if place^.x<r^.x then begin repeat x:=x+1; y:=((x*r^.y-x*place^.y-place^.x*r^.y+place^.x*r^.y)+(r^.x*place^.y-place^.x*place^.y))/(r^.x-place^.x); writeln(y); {Drawcircle(round(x),round(y),green); delay(2600); Drawcircle(round(x),round(y),black);} until x>=r^.x; end else begin repeat x:=x-1; y:=((x*r^.y-x*place^.y-place^.x*r^.y+place^.x*r^.y)+(r^.x*place^.y-place^.x*place^.y))/(r^.x-place^.x); Drawcircle(round(x),round(y),green); delay(2600); Drawcircle(round(x),round(y),black); until x<=r^.x; end; place:=place^.next; end; end; {main program} BEGIN clrscr; randomize; first:=nil; while k<>2 do begin New(place); readln(place^.x); readln(place^.y); place^.next:=first; first:=place; k:=k+1; end; readkey; draw(first); readkey; END. Вобщем получается так, что шарик летает несовсем по точкам...То выше точки, то попадает, но ниже..Вобщем укажите плз если не сложно где здесь что подправить.. Сообщение отредактировано: xlr8 - 3.06.2007 9:55 |
![]() ![]() |
![]() |
Текстовая версия | 12.08.2025 10:26 |