Задание 15

ТЕМА 15

"Разработка алгоритма для заданного исполнителя (вариант задания 15.1) или программы на универсальном языке программирования (вариант задания 15.2)"

Пример 1

Выберите ОДНО из предложенных ниже заданий: 15.1 или 15.2.

Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки. Между соседними (по сторонам) клетками может стоять стена, через которую Робот пройти не может. У Робота есть девять команд. Четыре команды — это команды-приказы:

вверх вниз влево вправо

При выполнении любой из этих команд Робот перемещается на одну клетку соответственно: вверх ↑ вниз ↓, влево ← , вправо →. Если Робот получит команду передвижения сквозь стену, то он разрушится. Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.

Ещё четыре команды — это команды проверки условий. Эти команды проверяют, свободен ли путь для Робота в каждом из четырёх возможных направлений:

сверху свободно снизу свободно слева свободно справа свободно

Эти команды можно использовать вместе с условием «если», имеющим следующий вид:

если условие то

последовательность команд

все

Здесь условие — одна из команд проверки условия. Последовательность команд — это одна или несколько любых команд-приказов. Например, для передвижения на одну клетку вправо, если справа нет стенки, и закрашивания клетки можно использовать такой алгоритм:

если справа свободно то

вправо

закрасить

все

В одном условии можно использовать несколько команд проверки условий, применяя логические связки и, или, не, например:

если (справа свободно) и (не снизу свободно) то

вправо

все

Для повторения последовательности команд можно использовать цикл «пока», имеющий следующий вид:

нц пока условие

последовательность команд

кц

Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:

нц пока справа свободно

вправо

кц

Выполните задание.

На бесконечном поле есть горизонтальная и две вертикальные стены, расположенные так, как показано на рисунке. Длины стен неизвестны. Робот находится где-то в одной из клеток, левее вертикальной стены расположенной слева. На рисунке указано одно из возможных расположений стен и Робота (Робот обозначен буквой «Р»).

Напишите для Робота алгоритм, закрашивающий все клетки, расположенные справа от вертикальных стен и прилегающие к ним. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведённого выше рисунка Робот должен закрасить следующие клетки (см. рисунок).

При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для любой длины такого расположения стен. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе. Сохраните алгоритм в текстовом файле.


15.2 Напишите программу, которая в последовательности натуральных чисел определяет сумму чисел, кратных 7 и оканчивающихся на 1. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, кратное 7 и оканчивающееся на 1. Количество чисел не превышает 100. Значения введённых чисел не превышают 1000. Программа должна вывести одно число — сумму чисел, кратных 7 и оканчивающихся на 1.

Пример работы программы:

Решение задания 15.1

(примерное решение на алгоритмическом языке)

Примерный план прохода робота по полю и закрашивание клеток, удовлетворяющих условию задачи:


1) Для решения задачи необходимо Робота сначала подвести к левой вертикальной стене, задав команду:

нц пока справа свободно

вправо

кц

2) Далее Робота можно подвести к нижней части левой стены, спустившись вниз, и обойти ее:

нц пока не справа свободно

вниз

кц

вправо

3) Закрашиваем правую сторону левой стены:

нц пока сверху свободно

вверх

закрасить

кц

4) Двигаемся вправо вдоль горизонтальной стены

нц пока справа свободно

вправо

кц

5) Спускаемся вниз до нижнего края вдоль правой вертикальной стены и обходим ее:

нц пока не справа свободно

вниз

кц

вправо

вверх

6) Закрашиваем правую сторону правой вертикальной стены:

нц пока не слева свободно

закрасить

вверх

кц

Алгоритм реализован.

Возможен и другой вариант решения, например обход лабиринта сверху и закраска, начиная с правой вертикальной стены.

Решение задания 15.2

(примерное решение на языке Паскаль)

Для решения поставленной задачи необходимо организовать запрос на ввод количества натуральных чисел последовательности, для этого используем пару команд:

writeln('Ведите количество чисел последовательности');

readln(n);

Параметр n будет определять количество повторений в цикле. Внутри цикла организуем ввод числа, проверку его заданному условию задачи и суммирование.

Условие кратности 7: (x mod 7 = 0)

Условие окончания числа на 1: (x mod 10 = 1)

Организуем цикл с параметром, в который поместим условие и счетчик по сумме чисел, предварительно обнулив его перед циклом (s:=0):

for i:=1 to n do

begin

readln(x);

if (x mod 7 = 0) and (x mod 10 = 1) then s:=s+x;

end;

После цикла выводим результат: writeln(s).

Получаем рабочую программу:

Program SUMMA;

var s,x,i,n: integer;

begin

s:=0;

writeln('Ведите количество чисел последовательности');

readln(n);

for i:=1 to n do

begin

readln(x);

if (x mod 7 = 0) and (x mod 10 = 1) then s:=s+x;

end;

writeln(s);

end.

Пример 2

Выберите ОДНО из предложенных ниже заданий: 15.1 или 15.2.

15.1 На бесконечном поле есть горизонтальная и вертикальная стены, расположенные так, как показано на рисунке. Длины стен неизвестны. Левый конец горизонтальной стены соединён с верхним концом вертикальной стены. В каждой из стен есть ровно один проход, точное место прохода и его ширина неизвестны. Робот находится где-то в одной из клеток, левее вертикальной стены расположенной слева. На рисунке указано одно из возможных расположений стен и Робота (Робот обозначен буквой «Р»).

Напишите для Робота алгоритм, закрашивающий все клетки, расположенные справа от вертикальной стены и клетки, прилегающие сверху к горизонтальной стене. Проходы должны остаться не закрашенными. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведённого рисунка Робот должен закрасить следующие клетки (см. рисунок).

При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для любой длины такого расположения стен. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе. Сохраните алгоритм в текстовом файле.

15.2 Напишите программу, которая в последовательности натуральных чисел определяет количество чисел, оканчивающихся на 8 и не кратных 4. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, не кратное 4 и оканчивающееся на 8. Количество чисел не превышает 100. Значения введённых чисел не превышают 1000. Программа должна вывести одно число — количество чисел, оканчивающихся на 8 и не кратных 4.

Пример работы программы:

Решение задания 15.1

(примерное решение на алгоритмическом языке)

Примерный план прохода робота по полю и закрашивание клеток, удовлетворяющих условию задачи:


1) Для решения задачи необходимо Робота сначала подвести к левой вертикальной стене, задав команду:

нц пока справа свободно

вправо

кц

2) Далее Робота можно подвести к нижней части левой стены, спустившись вниз, и обойти ее:

нц пока не справа свободно

вниз

кц

вправо

вверх

3) Закрашиваем правую сторону вертикальной стены до прохода:

нц пока сверху свободно и не слева свободно

закрасить

вверх

кц

4) Двигаемся вдоль вертикального прохода:

нц пока слева свободно

вверх

кц

5) Закрашиваем оставшуюся часть вдоль вертикальной стены:

нц пока сверху свободно и не слева свободно

закрасить

вверх

кц

закрасить

6) Двигаемся вдоль горизонтальной стены до прохода:

нц пока не сверху свободно

вправо

кц

7) Двигаемся вдоль горизонтального прохода:

нц пока сверху свободно

вправо

кц

8) Доходим до конца горизонтальной стены и поднимаемся на нее:

нц пока не сверху свободно

вправо

кц

вверх

влево

9) Закрашиваем клетки над горизонтальной стеной до прохода:

нц пока не снизу свободно

закрасить

влево

кц

10) Перемещаемся вдоль прохода:

нц пока снизу свободно

влево

кц

11) Закрашиваем оставшуюся часть клеток над горизонтальной стеной:

нц пока не снизу свободно

закрасить

влево

кц

Алгоритм реализован.

Возможен и другой вариант решения, например изначальное движение робота вдоль вертикальной стены вверх, закрашивание клеток над горизонтальной стеной, а далее закрашивание клеток вдоль вертикальной.

Решение задания 15.2

(примерное решение на языке Паскаль)

Для решения поставленной задачи необходимо организовать запрос на ввод количества натуральных чисел последовательности, для этого используем пару команд:

writeln('Ведите количество чисел последовательности');

readln(n);

Параметр n будет определять количество повторений в цикле. Внутри цикла организуем ввод числа, проверку его заданному условию задачи и подсчет их количества.

Условие не кратности 4: (x mod 4 <> 0)

Условие окончания числа на 8: (x mod 10 = 8)

Организуем цикл с параметром, в который поместим условие и счетчик количества чисел, предварительно обнулив его перед циклом (k:=0):

for i:=1 to n do

begin

readln(x);

if (x mod 4 <> 0) and (x mod 10 = 8) then k:=k+1;

end;

После цикла выводим результат: writeln(k).


Получаем рабочую программу:

Program KOL_VO;

var k,x,i,n: integer;

begin

k:=0;

writeln('Ведите количество чисел последовательности');

readln(n);

for i:=1 to n do

begin

readln(x);

if (x mod 4 <> 0) and (x mod 10 = 8) then k:=k+1;

end;

writeln(k);

end.

Пример 3

Выберите ОДНО из предложенных ниже заданий: 15.1 или 15.2.

15.1 На бесконечном поле есть две горизонтальных и одна вертикальная стены, расположенные так, как показано на рисунке. Длины стен неизвестны. В каждой из горизонтальных стен есть ровно один проход. Точное место прохода и его ширина не известны. Робот находится где-то в одной из клеток над верхней левой частью горизонтальной стены. На рисунке указано одно из возможных расположений стен и Робота (Робот обозначен буквой «Р»).

Напишите для Робота алгоритм, закрашивающий все клетки, расположенные под левой горизонтальной стеной и над правой горизонтальной стеной. Проходы должны остаться не закрашенными. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведённого рисунка Робот должен закрасить следующие клетки (см. рисунок).

При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для любой длины такого расположения стен. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе. Сохраните алгоритм в текстовом файле.

15.2 Напишите программу, которая в последовательности натуральных чисел определяет максимальное нечетное трехзначное число. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется нечетное трехзначное число. Количество чисел не превышает 1000. Значения введённых чисел не превышают 30000. Программа должна вывести одно число — максимальное нечетное трехзначное число последовательности.

Пример работы программы:

Решение задания 15.1

(примерное решение на алгоритмическом языке)

Примерный план прохода робота и закраска клеток, удовлетворяющих условию задачи:

1) Двигаемся вниз до верхней левой части горизонтальной стены:

нц пока снизу свободно

вниз

кц

2) Передвигаемся вдоль горизонтальной стены влево до края и заходим вниз под стену:

нц пока не снизу свободно

влево

кц

вниз

вправо

3) Закрашиваем левую часть под левой горизонтальной стеной:

нц пока не сверху свободно

закрасить

вправо

кц

4) Перемещаемся вдоль прохода левой горизонтальной стены:

нц пока сверху свободно

вправо

кц

5) Закрашиваем оставшуюся часть под левой горизонтальной стеной:

нц пока справа свободно

закрасить

вправо

кц

закрасить

6) Спускаемся вниз вдоль вертикальной стены и заходим под правую горизонтальную стену:

нц пока не справа свободно

вниз

кц

вправо

7) Проходим под левой частью правой горизонтальной стены и поднимаемся вверх:

нц пока не сверху свободно

вправо

кц

вверх

8) Двигаемся влево до конца:

нц пока слева свободно

влево

кц

9) Закрашиваем клетки над левой частью правой горизонтальной стены до прохода:

нц пока не снизу свободно

закрасить

вправо

кц

10) Перемещаемся вдоль прохода правой горизонтальной стены:

нц пока снизу свободно

вправо

кц

11) Закрашиваем оставшуюся часть над правой горизонтальной стеной справа:

нц пока не снизу свободно

закрасить

вправо

кц

Решение задания 15.2

(примерное решение на языке Паскаль)

Для решения поставленной задачи необходимо организовать запрос на ввод количества натуральных чисел последовательности, для этого используем пару команд:

writeln('Ведите количество чисел последовательности');

readln(n);

Параметр n будет определять количество повторений в цикле. Внутри цикла организуем ввод числа, проверку его заданному условию задачи и присвоение значения трехзначного числа переменной max, если оно больше max.

Условие нечетности: (x mod 2 <> 0)

Условие проверки принадлежности к трехзначным числам: (x>=100) and (x<=999)

Минимальное трехзначное число используем для начала сравнения: (x>max).

Все эти условия должны выполняться одновременно.

Организуем цикл с параметром, в который поместим условие поиска максимального нечетного трехзначного числа:

for i:= 1 to n do

begin

readln (x);

if (x mod 2 <>0) and (x>=100) and (x<=999) and (x>max) then

max:=x

end;

После цикла выводим результат: writeln(max).

Получаем рабочую программу:

Program MAXIMUM;

Var x, i, max, n: integer;

Begin

writeln('Ведите количество чисел последовательности');

readln(n);

max:=100;

for i:= 1 to n do

begin

readln (x);

if (x mod 2 <>0) and (x>=100) and (x<=999) and (x>max) then

max:=x

end;

writeln (max)

end.

  • Примеры, рассмотренные на этой странице в формате pdf: скачать
  • Задания для тренировки в формате pdf (вариант задания 15.1 ): скачать
  • Задания для тренировки в формате pdf (вариант задания 15.2 ): скачать

Задания для тренировки

вариант задания 15.1

Задача 1

Напишите для Робота алгоритм, закрашивающий все клетки, как показано на рисунке. Проходы должны остаться не закрашенными. Поле бесконечное. Длины стен неизвестны. Точное место прохода и его ширина также неизвестны. При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Конечное расположение Робота может быть произвольным. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Задача 2

Напишите для Робота алгоритм, закрашивающий все клетки, как показано на рисунке. Проходы должны остаться не закрашенными. Поле бесконечное. Длины стен неизвестны. Точное место прохода и его ширина также неизвестны. При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Конечное расположение Робота может быть произвольным. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Задача 3

Напишите для Робота алгоритм, закрашивающий все клетки, как показано на рисунке. Проходы должны остаться не закрашенными. Поле бесконечное. Длины стен неизвестны. Точное место прохода и его ширина также неизвестны. При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Конечное расположение Робота может быть произвольным. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Задача 4

Напишите для Робота алгоритм, закрашивающий все клетки, как показано на рисунке. Проходы должны остаться не закрашенными. Поле бесконечное. Длины стен неизвестны. Точное место прохода и его ширина также неизвестны. При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Конечное расположение Робота может быть произвольным. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Задача 5

Напишите для Робота алгоритм, закрашивающий все клетки, как показано на рисунке. Проходы должны остаться не закрашенными. Поле бесконечное. Длины стен неизвестны. Точное место прохода и его ширина также неизвестны. При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Конечное расположение Робота может быть произвольным. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Задача 6

Напишите для Робота алгоритм, закрашивающий все клетки, как показано на рисунке. Проходы должны остаться не закрашенными. Поле бесконечное. Длины стен неизвестны. Точное место прохода и его ширина также неизвестны. При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Конечное расположение Робота может быть произвольным. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Задача 7

Напишите для Робота алгоритм, закрашивающий все клетки, как показано на рисунке. Проходы должны остаться не закрашенными. Поле бесконечное. Длины стен неизвестны. Точное место прохода и его ширина также неизвестны. При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Конечное расположение Робота может быть произвольным. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Задача 8

Напишите для Робота алгоритм, закрашивающий все клетки, как показано на рисунке. Проходы должны остаться не закрашенными. Поле бесконечное. Длины стен неизвестны. Точное место прохода и его ширина также неизвестны. При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Конечное расположение Робота может быть произвольным. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Задача 9

Напишите для Робота алгоритм, закрашивающий все клетки, как показано на рисунке. Проходы должны остаться не закрашенными. Поле бесконечное. Длины стен неизвестны. Точное место прохода и его ширина также неизвестны. При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Конечное расположение Робота может быть произвольным. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Задача 10

Напишите для Робота алгоритм, закрашивающий все клетки (проходы), как показано на рисунке. Поле бесконечное. Длины стен неизвестны. Точное место прохода и его ширина также неизвестны. При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Конечное расположение Робота может быть произвольным. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Задания для тренировки

вариант задания 15.2

Задача 1

Напишите программу, которая в последовательности натуральных чисел определяет минимальное число, которое оканчивается на 7. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, оканчивающееся на 7. Количество чисел не превышает 1000. Значения введённых чисел не превышают 30000. Программа должна вывести одно число – минимальное число, оканчивающееся на 7.

Задача 2

Напишите программу, которая в последовательности натуральных чисел определяет сумму чисел, кратных 6 и оканчивающихся на 2. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, кратное 6 и оканчивающееся на 2. Количество чисел не превышает 1000. Значения введённых чисел не превышают 30000. Программа должна вывести одно число — сумму чисел, кратных 6 и оканчивающихся на 2.

Задача 3

Напишите программу, которая в последовательности натуральных чисел определяет количество чисел, оканчивающихся на 9 и не кратных 3. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, не кратное 3 и оканчивающееся на 9. Количество чисел не превышает 1000. Значения введённых чисел не превышают 30000. Программа должна вывести одно число — количество чисел, оканчивающихся на 9 и не кратных 3.

Задача 4

Напишите программу, которая в последовательности натуральных чисел определяет максимальное четное трехзначное число. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется четное трехзначное число. Количество чисел не превышает 1000. Значения введённых чисел не превышают 30000. Программа должна вывести одно число — максимальное четное трехзначное число последовательности.

Задача 5

Напишите программу, которая в последовательности натуральных чисел определяет количество чисел, кратных 2 или 8. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число кратное 2 или 8. Количество чисел не превышает 1000. Значения введённых чисел не превышают 30000. Программа должна вывести одно число — количество чисел последовательности, кратных 2 или 8.

Задача 6

Напишите программу, которая в последовательности натуральных чисел определяет максимальное четырехзначное число, которое оканчивается на 1. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется четырехзначное число, которое оканчивается на 1. Количество чисел не превышает 1000. Введённые числа не превышают 30000. Программа должна вывести одно число последовательности – максимальное четырехзначное число, оканчивающееся на 1.

Задача 7

Напишите программу, которая в последовательности натуральных чисел определяет сумму чисел, не кратных 4 и оканчивающихся на 4. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, не кратное 4 и оканчивающееся на 4. Количество чисел не превышает 1000. Значения введённых чисел не превышают 30000. Программа должна вывести одно число — сумму чисел, не кратных 4 и оканчивающихся на 4.

Задача 8

Напишите программу, которая в последовательности натуральных чисел определяет количество чисел, кратных 2, 4 и 8. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, кратное 2, 4 и 8. Количество чисел не превышает 1000. Значения введённых чисел не превышают 30000. Программа должна вывести одно число — количество чисел, кратных 2, 4 и 8.

Задача 9

Напишите программу, которая в последовательности натуральных чисел определяет сумму четных трехзначных чисел, не кратных 8 и не оканчивающихся на 2. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется четное трехзначное число, не кратное 8 и не оканчивающееся на 2. Количество чисел не превышает 1000. Значения введённых чисел не превышают 30000. Программа должна вывести одно число — сумму четных трехзначных чисел, не кратных 8 и не оканчивающихся на 2.

Задача 10

Напишите программу, которая в последовательности натуральных чисел определяет минимальное число, кратное 9. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, кратное 9. Количество чисел не превышает 1000. Значения введённых чисел не превышают 30000. Программа должна вывести одно число из последовательности – минимальное число, кратное 9.

Комментарии, отзывы и предложения Вы можете направить на e-mail, указанный в контактах или оставить в гостевой книге, указав тему вопроса: перейти в гостевую книгу