Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задача про жуков))

Автор: Shook Its On 21.06.2007 1:52

Помогите плиз решить задачку с использованием динамических списков:

Файл содержит информацию о местах на плоскости некоторого количества жуков. Продемонстрировать (К примеру в матрице - считая в ней 1-жук, 0 - нету жука) поведение колонии жуков на K шагах(каждый шаг матрица меняется). В течение одного шага каждый жук преследует следующего за ним жука. Последний жук преследует первого жука. Если в конце шага жук приблизился к преследуемому жуку ближе, чем на E(задаваемое пользователем число), он поедает преследуемого жука.

Очень надеюсь на вашу помощь и заранее благодарен)))

Автор: Michael_Rybak 21.06.2007 2:40

Прикольно smile.gif

В чем именно проблема?

Автор: Shook Its On 21.06.2007 3:06

Да вот просто не знаю как писать - не разобрался ещё толком в динамических списках(( (программирую не так давно - учусь токо)

Автор: Lapp 21.06.2007 4:01

Цитата(Shook Its On @ 21.06.2007 0:06) *

не разобрался ещё толком в динамических списках((

Про списки почитай вот тут: http://forum.pascal.net.ru/index.php?showtopic=2706
А хоть что-то есть? Если начал писать - покажи, поможем.

Автор: Lapp 21.06.2007 10:52

Интересно - а уже была аналогичная тема! Только что случайно наткнулся, вот:
http://forum.pascal.net.ru/index.php?showtopic=10727&hl=
Только не знаю, поможет ли она тебе.. smile.gif

Автор: Shook Its On 22.06.2007 18:59

Спасибо за ссылки)) Посмотрю и всётаки попытаюсь написать прогу - вдруг всётаки додумаю как))

Автор: Shook Its On 25.06.2007 3:17

Вот написал - почти всё работает - жучки бегают но некоторые время от времени размножаются)))) появляется 2 одинаковых)) немогу найти ошибку - Помогите плиз
Заранее благодарен

Код

program Zuki;
type
Dzuk=^Zuk;
Zuk=record
    num:   integer;
    x,y:   integer;
    pnext:     Dzuk
    end;
tmas=array [1..12] of array [1..12] of integer;

var pBeg,pnex,ppr,p1,p2,pd:Dzuk;
    input,output:text;
    n,m,i,j,k,l:integer;
    e:real;
    mas:tmas;

procedure obnul(var as:tmas);
var c,d:integer;
begin
for c:=1 to 12 do begin
   for d:=1 to 12 do as[c,d]:=0;
                  end;
end;

procedure vivod(var as:tmas);
var c,d:integer;
begin
for c:=1 to 12 do begin
   for d:=1 to 12 do if as[c,d]=0 then write(output,'_  ')
                        else write(output,as[c,d],'  ');
   writeln(output);
                  end;
end;


procedure shag(var d1,d2:Dzuk);
var a1,b1,a2,b2:integer;  h:real; r:Dzuk;
begin
a1:=d1^.x;
b1:=d1^.y;
a2:=d2^.x;
b2:=d2^.y;
if a1<a2 then a1:=a1+1;
if b1<b2 then b1:=b1+1;
if a1>a2 then a1:=a1-1;
if a1>a2 then b1:=b1-1;
d1^.x:=a1;
d1^.y:=b1;
h:=sqrt(sqr(a2-a1)+sqr(b2-b1));
if h<e then begin
            r:=d1^.pnext;
            d1^.pnext:=d1^.pnext^.pnext;
            if r=pBeg then pBeg:=d1^.pnext;
            r^.pnext:=nil; k:=k-1;
            end;

end;


begin
assign(input,'input.txt');  reset(input);
assign(output,'output.txt'); rewrite(output);
read(input,n);
writeln(output,'kol-vo zukov =',n);
read(input,m);
writeln(output,'kol-vo wagov =',m);
read(input,e);
writeln(output,'rassto9nie poedani9 =',e);
k:=n;
{____sozdaem___spisok__________________________}
new(p1);
p2:=p1;
pBeg:=p1;
p1^.num:=1;
read(input,p1^.x);
read(input,p1^.y);
for i:=2 to n do
   begin
        new(p2^.pnext);
        p2:=p2^.pnext;
        p2^.num:=i;
        read(input,p2^.x);
        read(input,p2^.y);
   end;
p2^.pnext:=p1;
{_______________________________________________}
ppr:=pBeg;
pnex:=pBeg;
for i:=1 to n do begin
mas[pnex^.x,pnex^.y]:=pnex^.num;
pnex:=pnex^.pnext;
end;
vivod(mas);
writeln(output,'************************');


for j:=1 to m do begin
    obnul(mas);
    ppr:=pBeg;
    for i:=1 to k do begin
ppr:=ppr^.pnext;
end;
     for l:=1 to k do begin
     shag(ppr,ppr^.pnext);
     mas[ppr^.x,ppr^.y]:=ppr^.num;
     ppr:=ppr^.pnext;
     end;

        vivod(mas);
        writeln(output,'************************');

end;

close(output);
end.



Прикрепленные файлы
Прикрепленный файл  zuki.rar ( 2.19 килобайт ) Кол-во скачиваний: 163

Автор: Bokul 25.06.2007 7:15

Прикрепи необходимые файлы.

Автор: Shook Its On 25.06.2007 14:27

Добавил)) (сразу после кода)