Вывести на экран компьютера маршрут движения робота - Turbo Pascal

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

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

Петя вместе со своим другом Пашей решили создать программу для урока информатики по теме "Моделирование". За основу работы они решили взять алгоритм работы робота, шагающего по прямоугольному полю размером m*n по следующему маршруту: 1 2 6 7 ... 3 5 8 ... 4 9 ... 10 ... ... Напишите программу, выводящую на экран компьютера маршрут движения робота, если каждый свой шаг робот обозначает порядковым числом, начиная с 1 в верхнем левом углу. Размеры поля не превышают 50х50.

Решение задачи: «Вывести на экран компьютера маршрут движения робота»

textual
Листинг программы
var
    n, m, c, i, j :longint;
    a :array[1 .. 100, 1 .. 100] of longint;
 
procedure go(x, y, f :longint);
begin   
    c := c + 1;
    a[x][y] := c;
    if (x <> n) or (y <> m) then begin
        
        if (f = 0) then begin
            if (x - 1 = 0) then
                go(x, y + 1, 1)
            else
            if (y + 1 > m) then 
                go(x + 1, y, 1)
            else
                go(x - 1, y + 1, 0); 
        end;
        
        if (f = 1) then begin
            if (x + 1 > n) then
                go(x, y + 1, 0)
            else
            if (y - 1 = 0) then
                go(x + 1, y, 0)
            else
                go(x + 1, y - 1, 1);
        end;
 
 
    end;
end;
 
begin
    read(n, m);
    go(1, 1, 0);
 
    for i := 1 to n do begin
        for j := 1 to m do
            write(a[i][j], ' ');
        writeln;
    end;
end.

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

  1. Переменные n, m и c инициализируются значением 0.
  2. В процедуре go переменные x, y и f инициализируются значениями 1, 1 и 0 соответственно.
  3. Переменная c увеличивается на 1.
  4. Если x не равно n и y не равно m, то выполняется условный блок.
  5. Если f равно 0, то выполняются следующие действия:
    • Если x равно 1 и y равно 1, то вызывается процедура go с аргументами x, y и 1.
    • Если x равно 0 и y не равно m, то вызывается процедура go с аргументами x+1, y и 1.
    • Если x равно 0 и y равно 0, то вызывается процедура go с аргументами x+1, y и 0.
    • Если x равно 0 и y не равно 0, то вызывается процедура go с аргументами x-1, y и 0.
  6. Если f равно 1, то выполняются следующие действия:
    • Если x равно 1 и y равно 0, то вызывается процедура go с аргументами x, y и 0.
    • Если x равно 0 и y равно 1, то вызывается процедура go с аргументами x+1, y и 0.
    • Если x равно 0 и y равно 0, то вызывается процедура go с аргументами x+1, y и 1.
    • Если x равно 0 и y равно 2, то вызывается процедура go с аргументами x+1, y-1 и 1.
  7. Выводится значение переменной a[i][j].
  8. Выполняется цикл for, который проходит по всем элементам массива a.
  9. После завершения цикла выводится символ пробела и переход на новую строку.

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

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