Изобразить траекторию движения - 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.
Объяснение кода листинга программы
Список действий в коде:
- Инициализация переменных и массива.
- Заполнение массива символом
#
в случайных позициях. - Установка переменной
i
в позицию (pi,pj). - Ввод цикла, который выполняется 10 раз.
- В каждой итерации цикла в случайной позиции массива устанавливается символ
#
. - После выполнения цикла на позиции (pi,pj) устанавливается символ
i
. - Пока значение переменной
pi
больше 1, выполняется цикл. - В каждой итерации внешнего цикла выводится символ из массива.
- Если символ в позиции (pi-1,pj-1) равен
#
, то выполняется внутренний цикл. - В каждой итерации внутреннего цикла символ
j
устанавливается на позициях (pi,pj) и (pi-1,pj-1). - После выполнения внутреннего цикла символ
i
устанавливается на позиции (pi,pj). - Если символ в позиции (pi-1,pj) равен
#
, то выполняется внутренний цикл. - В каждой итерации внутреннего цикла символ
j
устанавливается на позициях (pi,pj) и (pi-1,pj). - Если символ в позиции (pi-1,pj+1) равен
#
, то выполняется внутренний цикл. - В каждой итерации внутреннего цикла символ
j
устанавливается на позициях (pi,pj) и (pi-1,pj). - Если символ в позиции (pi+1,pj) равен
#
, то выполняется внутренний цикл. - В каждой итерации внутреннего цикла символ
j
устанавливается на позициях (pi,pj) и (pi+1,pj). - Если pi меньше 30, то выполняется внутренний цикл.
- В каждой итерации внутреннего цикла символ
i
устанавливается на позиции (pi,pj). - После выполнения внутреннего цикла значение переменной
pi
увеличивается на 1. - После выполнения внешнего цикла значение переменной
pj
уменьшается на 1. - Если значение переменной
pj
больше 1 и меньше 30, то значение переменнойpi
уменьшается на 1. - Если значение переменной
pj
больше 1 и меньше 30, то значение переменнойpj
увеличивается на 1. - Если значение переменной
pi
меньше 30, то значение переменнойpi
увеличивается на 1. - Чтение строки с помощью функции ReadLn.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д