Изобразить траекторию движения - Free Pascal

Узнай цену своей работы

Формулировка задачи:

В случайных точках местности расположены несколько столбов, некоторые из них соединены заборами. Пьяница с равной вероятностью делает шаг вперёд, назад, вперёд-влево и вперёд-вправо (под 45 градусов), натолкнувшись на столб или забор, он падает (на время). Изобразить траекторию движения. Добавлено через 7 минут 32 секунды очень срочно надо, пожалуйста кто нибудь помогите

Решение задачи: «Изобразить траекторию движения»

textual
Листинг программы
program pjan;
USES crt;
VAR
i,j,s,pi,pj:integer;
a:array[1..30,1..30] of string;
BEGIN
  randomize;
  pi:=30;
  pj:=random(30)+1;
  for i:=1 to 10 do begin
    a[random(30)+1,random(30)+1]:='#';
  end;
  a[pi,pj]:='i';
  while pi>1 do begin
  for i:= 1 to 30 do begin
  for j:= 1 to 30 do begin
  write(a[i,j]:1);
  end;
  writeln;
  end;
  delay(1000);
  clrscr;
  s:=random(4);
  case s of
  0: if a[pi-1,pj-1]='#' then begin
  a[pi,pj]:='j';
  delay(2000);
  a[pi,pj]:='i';
  end
  else if (pj<=30) and (pj>1) then begin
  a[pi,pj]:='';
  pi:=pi-1;
  pj:=pj-1;
  a[pi,pj]:='i';
  end;
  1:if a[pi-1,pj]='#' then begin
  a[pi,pj]:='j';
  delay(2000);
  a[pi,pj]:='i';
  end
  else begin
  a[pi,pj]:='';
  pi:=pi-1;
  a[pi,pj]:='i';
  end;
  2:if a[pi-1,pj+1]='#' then begin
  a[pi,pj]:='j';
  delay(2000);
  a[pi,pj]:='i';
  end
  else if (pj<30) and (pj>=1) then begin
  a[pi,pj]:='';
  pi:=pi-1;
  pj:=pj+1;
  a[pi,pj]:='i';
  end;
  3:if a[pi+1,pj]='#' then begin
  a[pi,pj]:='j';
  delay(2000);
  a[pi,pj]:='i';
  end
  else if pi<30 then begin
  a[pi,pj]:='';
  pi:=pi+1;
  a[pi,pj]:='i';
  end;
  end;
  end;
  ReadLn;
END.

Объяснение кода листинга программы

Список действий в коде:

  1. Инициализация переменных и массива.
  2. Заполнение массива символом # в случайных позициях.
  3. Установка переменной i в позицию (pi,pj).
  4. Ввод цикла, который выполняется 10 раз.
  5. В каждой итерации цикла в случайной позиции массива устанавливается символ #.
  6. После выполнения цикла на позиции (pi,pj) устанавливается символ i.
  7. Пока значение переменной pi больше 1, выполняется цикл.
  8. В каждой итерации внешнего цикла выводится символ из массива.
  9. Если символ в позиции (pi-1,pj-1) равен #, то выполняется внутренний цикл.
  10. В каждой итерации внутреннего цикла символ j устанавливается на позициях (pi,pj) и (pi-1,pj-1).
  11. После выполнения внутреннего цикла символ i устанавливается на позиции (pi,pj).
  12. Если символ в позиции (pi-1,pj) равен #, то выполняется внутренний цикл.
  13. В каждой итерации внутреннего цикла символ j устанавливается на позициях (pi,pj) и (pi-1,pj).
  14. Если символ в позиции (pi-1,pj+1) равен #, то выполняется внутренний цикл.
  15. В каждой итерации внутреннего цикла символ j устанавливается на позициях (pi,pj) и (pi-1,pj).
  16. Если символ в позиции (pi+1,pj) равен #, то выполняется внутренний цикл.
  17. В каждой итерации внутреннего цикла символ j устанавливается на позициях (pi,pj) и (pi+1,pj).
  18. Если pi меньше 30, то выполняется внутренний цикл.
  19. В каждой итерации внутреннего цикла символ i устанавливается на позиции (pi,pj).
  20. После выполнения внутреннего цикла значение переменной pi увеличивается на 1.
  21. После выполнения внешнего цикла значение переменной pj уменьшается на 1.
  22. Если значение переменной pj больше 1 и меньше 30, то значение переменной pi уменьшается на 1.
  23. Если значение переменной pj больше 1 и меньше 30, то значение переменной pj увеличивается на 1.
  24. Если значение переменной pi меньше 30, то значение переменной pi увеличивается на 1.
  25. Чтение строки с помощью функции ReadLn.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.375 из 5
Похожие ответы