![]() |
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 |
Ozzя |
![]()
Сообщение
#2
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
Тут прочитал как решать товю задачу?
|
xlr8 |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 22 Пол: Мужской Репутация: ![]() ![]() ![]() |
Будем разбиратся..Спасибо
|
xlr8 |
![]()
Сообщение
#4
|
Новичок ![]() Группа: Пользователи Сообщений: 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. |
Артемий |
![]()
Сообщение
#5
|
![]() Помощник капитана ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 601 Пол: Мужской Реальное имя: Артем Репутация: ![]() ![]() ![]() |
Извини, а можно присоеденить модуль My? А то знаешь,компилятор то не волшебник..
![]() -------------------- Dum spiro spero!
|
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
xlr8, динамический список где? Массив вижу, списка здесь нет...
Сообщение отредактировано: volvo - 2.06.2007 20:35 |
xlr8 |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Пользователи Сообщений: 22 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот модуль My..но он совсем не суть..
volvo, задание прийдется уточнить ![]() Код Unit MY; Interface Uses Crt, Graph; Var Err,s,x,y:integer; procedure Init_Graph; procedure Drawcircle(x,y:integer;color:word); Implementation procedure Init_Graph; var GD, GM, EC: Integer; begin GD:= Detect; InitGraph(GD,GM,'C:\TP\BGI\'); EC:= GraphResult; if EC<>GrOK then begin WriteLn('Error Graphic Initialize: ', GraphErrorMsg(EC)); Halt(1); end; end; procedure Drawcircle(x,y:integer;color:word); var p:FillPatternType; begin Setcolor(color); Circle(x,y,2); GetFillPattern(p); SetFillPattern(p,color); FloodFill(x,y,color); end; End. |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
И динамического массива здесь тоже нет... Понимаешь, динамический массив - это когда ты при запуске программы не знаешь его размера, и только в RunTime становится известен размер, который тебе необходим, и инициализируется массив нужного размера. А у тебя все известно - массив статический (место-то под сам массив выделяется еще на этапе компиляции). То, что сами элементы хранятся в "куче" - ничего не значит... Массив от этого не становится динамическим в полном смысле этого слова...
А задание все-таки уточни, и подкорректируй название темы соответственно, а то в названии написано одно, а ты говоришь что это - несущественно... |
xlr8 |
![]()
Сообщение
#9
|
Новичок ![]() Группа: Пользователи Сообщений: 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 |
Чужак |
![]()
Сообщение
#10
|
![]() меркантильный ![]() ![]() ![]() Группа: Пользователи Сообщений: 161 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вопрос: обязательно использовать массивы,
файлы, динамическме списки? Можешь уточнить задание? Если точки все равно задаются рандомно, или шире-произвольно, то обязателен ли их список? Есть один экспериментальный код, где шарик отражается от стенок, но и сам может менять свое направление. Выкладывается под ТВОЮ полную ответственность ![]() ![]() -------------------- Смысл откроется тебе. Красками играя
Жизнь предстанет как поток без конца и края. В этом мире порой разбиваютсямечты Но чтобы он стал другой Вдруг в него приходишь ТЫ... После странствий и скитаний настают другие времена. Старая волна уходит и приходит новая волна. |
xlr8 |
![]()
Сообщение
#11
|
Новичок ![]() Группа: Пользователи Сообщений: 22 Пол: Мужской Репутация: ![]() ![]() ![]() |
Задачу нужно решить применив двунаправленый список (этих самых координат)..
Если кто знает - подскажите как? Заранее спасибо Сообщение отредактировано: xlr8 - 5.06.2007 18:25 |
volvo |
![]()
Сообщение
#12
|
Гость ![]() |
Вот набросок:
uses crt, graph;Единственное, что надо еще сделать - это принять меры против того, что изображение точки "размывается" при проходе над ней шарика... Это просто, попробуй догадаться сам... |
xlr8 |
![]()
Сообщение
#13
|
Новичок ![]() Группа: Пользователи Сообщений: 22 Пол: Мужской Репутация: ![]() ![]() ![]() |
Спасибо огромное!
![]() |
xlr8 |
![]()
Сообщение
#14
|
Новичок ![]() Группа: Пользователи Сообщений: 22 Пол: Мужской Репутация: ![]() ![]() ![]() |
Помогите удалить елемент из списка. По правильному вроде бы так..У меня работает всё отлично только если вот так:
В чем проблема тут? |
volvo |
![]()
Сообщение
#15
|
Гость ![]() |
Цитата В чем проблема тут? Может, в том, что элементы считаются у тебя с НУЛЯ?Добавлено через 6 мин. Хм... вторая попытка... Ты сам понял, что написал? nav:=p; Это значит (если Nav заменить на P, они же равны, так?): p^.prev:=p^.prev; Что получишь? Бред... Делаем так? nav:=p; |
![]() ![]() |
![]() |
Текстовая версия | 20.06.2025 23:36 |