а) На бесконечном клетчатом поле имеется горизонтальная стена. Длина стены неизвестна. Робот находится в одной из клеток, примыкающих к стене сверху. На рисунке указан один из возможных вариантов расположения Робота и стены (Робот обозначен буквой «Р»).
Робот должен закрасить все клетки, примыкающие к стене сверху. Так, для приведенного выше рисунка должны быть закрашены следующие клетки:
Конечное положение Робота значения не имеет. Опишите укрупненными блоками план действий Робота по решению поставленной задачи:
б) Где-то в поле Робота находятся две вертикальные стены равной, но неизвестной длины, расположенные одна напротив другой. Робот находится в произвольной клетке справа от правой стены, причем напротив нее. На рисунке указан один из возможных вариантов расположения Робота и стен (Робот обозначен буквой Р). Робот приступил к исполнению следующего алгоритма: нц пока слева свободно влево кц нц пока слева не свободно вверх кц влево; вниз нц пока справа не свободно или слева не свободно нц пока слева свободно закрасить; влево кц закрасить; вниз нц пока справа свободно закрасить; вправо кц закрасить; вниз кц Каким будет результат исполнения данного алгоритма? Изобразите его на рисунке.
Опишите алгоритм действий Робота укрупненными шагами: Сначала робот идет влево до стены, затем поднимается наверх пока слева не будет свободно. Робот делает шаги влево вниз и стал находиться между стенами. Робот начинает закрашивать клетки между стенами пока стена не закончится. Тем самым он закрасил все клетки между двумя стенками.
в) На бесконечном клетчатом поле имеется горизонтальная стена. Длина стены неизвестна. Робот находится в одной из клеток, примыкающих к стене сверху. Точное положение Робота неизвестно. На рисунке указан один из возможных вариантов расположения Робота и стен (Робот обозначен буквой Р).
Напишите алгоритм: алг нач нц пока не (снизу свободно) влево кц вправо нц пока не (снизу свободно) закрасить вправо вправо кц кон
г) Робот находится в произвольной точке внутри прямоугольного огороженного стенами участка клетчатого поля. Размеры прямоугольника неизвестны. Напишите алгоритм, с помощью которого Робот закрасит все клетки, примыкающие к нижней стороне прямоугольника. Конечное положение Робота может быть произвольным.
д) Робот находится в произвольной точке внутри прямоугольного огороженного стенами участка клетчатого поля. Размеры прямоугольника неизвестны. Напишите алгоритм, с помощью которого Робот закрасит все клетки, примыкающие к сторонам прямоугольника, и вернется в начальное положение.
Program Zadacha197;
uses crt;
var i, k, a:integer;
BEGIN
writeln('Введите а');
readln(a);
i := 0;
k := 1;
while (a<>0) and (k < 1000) do
begin
if (a mod 3 = 0) and (abs(a) <= 30000) then i := i + 1;
k := k + 1;
readln(a);
end;
writeln(i, '- количество четных чисел, кратных трём.');
END.
- while (a<>0) and (k < 1000) эту часть кода можно понять так, пока введенное число не равно нулю и количество введенных чисел не превышает 1000 то выполняется программа.
- if (a mod 3 = 0) and (abs(a) <= 30000) если введенное число делится на три без остатка и по модулю введенное число меньше 30000 то выполняется данное условие.
- i эта переменная у нас считает количество чисел кратных трём.
- k эта переменная считает количество введенных чисел во время использования программы.
- a эта переменная вводится пользователем.
а) На бесконечном клетчатом поле имеется горизонтальная стена. Длина стены неизвестна. Робот находится в одной из клеток, примыкающих к стене сверху. На рисунке указан один из возможных вариантов расположения Робота и стены (Робот обозначен буквой «Р»).
Робот должен закрасить все клетки, примыкающие к стене сверху. Так, для приведенного выше рисунка должны быть закрашены следующие клетки:
Конечное положение Робота значения не имеет.
Опишите укрупненными блоками план действий Робота по решению поставленной задачи:
б) Где-то в поле Робота находятся две вертикальные стены равной, но неизвестной длины, расположенные одна напротив другой. Робот находится в произвольной клетке справа от правой стены, причем напротив нее.
На рисунке указан один из возможных вариантов расположения Робота и стен (Робот обозначен буквой Р).
Робот приступил к исполнению следующего алгоритма:
нц пока слева свободно влево кц
нц пока слева не свободно вверх кц
влево; вниз
нц пока справа не свободно или слева не свободно нц пока слева свободно закрасить; влево кц
закрасить; вниз нц пока справа свободно закрасить; вправо кц
закрасить; вниз кц
Каким будет результат исполнения данного алгоритма? Изобразите его на рисунке.
Опишите алгоритм действий Робота укрупненными шагами:
Сначала робот идет влево до стены, затем поднимается наверх пока слева не будет свободно. Робот делает шаги влево вниз и стал находиться между стенами. Робот начинает закрашивать клетки между стенами пока стена не закончится. Тем самым он закрасил все клетки между двумя стенками.
в) На бесконечном клетчатом поле имеется горизонтальная стена. Длина стены неизвестна. Робот находится в одной из клеток, примыкающих к стене сверху. Точное положение Робота неизвестно. На рисунке указан один из возможных вариантов расположения Робота и стен (Робот обозначен буквой Р).
Напишите алгоритм:
алг
нач
нц пока не (снизу свободно)
влево
кц
вправо
нц пока не (снизу свободно)
закрасить
вправо
вправо
кц
кон
г) Робот находится в произвольной точке внутри прямоугольного огороженного стенами участка клетчатого поля. Размеры прямоугольника неизвестны. Напишите алгоритм, с помощью которого Робот закрасит все клетки, примыкающие к нижней стороне прямоугольника. Конечное положение Робота может быть произвольным.
д) Робот находится в произвольной точке внутри прямоугольного огороженного стенами участка клетчатого поля. Размеры прямоугольника неизвестны. Напишите алгоритм, с помощью которого Робот закрасит все клетки, примыкающие к сторонам прямоугольника, и вернется в начальное положение.
uses crt;
var i, k, a:integer;
BEGIN
writeln('Введите а');
readln(a);
i := 0;
k := 1;
while (a<>0) and (k < 1000) do
begin
if (a mod 3 = 0) and (abs(a) <= 30000) then i := i + 1;
k := k + 1;
readln(a);
end;
writeln(i, '- количество четных чисел, кратных трём.');
END.
- while (a<>0) and (k < 1000) эту часть кода можно понять так, пока введенное число не равно нулю и количество введенных чисел не превышает 1000 то выполняется программа.
- if (a mod 3 = 0) and (abs(a) <= 30000) если введенное число делится на три без остатка и по модулю введенное число меньше 30000 то выполняется данное условие.
- i эта переменная у нас считает количество чисел кратных трём.
- k эта переменная считает количество введенных чисел во время использования программы.
- a эта переменная вводится пользователем.