Выполните задание.
На бесконечном поле имеется прямоугольник, ограниченный стенами. Длины сторон прямоугольника неизвестны. Робот находится внутри прямоугольника. На рисунке указан один из возможных расположения стен и Робота (Робот обозначен буквой «Р»).
Напишите для Робота алгоритм, закрашивающий верхние угловые клетки. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведённого выше рисунка Робот должен закрасить следующие клетки (см. рисунок).
Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для произвольного размера поля и любого допустимого расположения стен внутри прямоугольного поля. При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе. Сохраните алгоритм в текстовом файле.
// Внимание! Если программа не работает, обновите версию!
procedure pSum(a,b:integer; var r:integer);
begin
r:=a.To(b).Sum
end;
function fSum(a,b:integer):=a.To(b).Sum;
begin
var (a,b):=ReadInteger2('Начало и конец интервала:');
var c:integer;
pSum(a,b,c);
Writeln('Сумма при процедуры: ',c);
Writeln('Сумма при функции : ',fSum(a,b))
end.
Пример
Начало и конец интервала: 3 28
Сумма при процедуры: 403
Сумма при функции : 403
Велосипедист на тренировке в первый день проехал 19 км за 54 минуты. В каждый последующий день он проезжал этот же путь на 2 минуты быстрее, чем в предыдущий. Найти среднюю скорость велосипедиста, которую он показал, тренируясь неделю.
Решение
Средняя скорость будет равна отношению всего пройденного пути к затраченному времени. Путь за неделю составит 19×7 км.
Время может быть найдено как 54+(54-2)+(54-4)+...
function T(a0,h:real; k:integer):real;
begin
Result:=0;
var ts:=a0;
loop k do begin
Result+=ts; ts-=h
end;
Result/=60
end;
procedure Phisics(n:integer; t0,dt,s1:real);
begin
var s:=n*s1;
var v:=s/T(t0,dt,n);
Writeln('Средняя скорость ',v,' км/час')
end;
begin
var n:=ReadInteger('Количество дней:');
var s:=ReadReal('Длина трека, км:');
var (t0,th):=ReadReal2('Время в первый день и величина улучшения, мин:');
Phisics(n,t0,th,s)
end.
Результат
Количество дней: 7
Длина трека, км: 19
Время в первый день и величина улучшения, мин: 54 2
Средняя скорость 23.75 км/час
// Внимание! Если программа не работает, обновите версию!
procedure pSum(a,b:integer; var r:integer);
begin
r:=a.To(b).Sum
end;
function fSum(a,b:integer):=a.To(b).Sum;
begin
var (a,b):=ReadInteger2('Начало и конец интервала:');
var c:integer;
pSum(a,b,c);
Writeln('Сумма при процедуры: ',c);
Writeln('Сумма при функции : ',fSum(a,b))
end.
Пример
Начало и конец интервала: 3 28
Сумма при процедуры: 403
Сумма при функции : 403
Велосипедист на тренировке в первый день проехал 19 км за 54 минуты. В каждый последующий день он проезжал этот же путь на 2 минуты быстрее, чем в предыдущий. Найти среднюю скорость велосипедиста, которую он показал, тренируясь неделю.
Решение
Средняя скорость будет равна отношению всего пройденного пути к затраченному времени. Путь за неделю составит 19×7 км.
Время может быть найдено как 54+(54-2)+(54-4)+...
function T(a0,h:real; k:integer):real;
begin
Result:=0;
var ts:=a0;
loop k do begin
Result+=ts; ts-=h
end;
Result/=60
end;
procedure Phisics(n:integer; t0,dt,s1:real);
begin
var s:=n*s1;
var v:=s/T(t0,dt,n);
Writeln('Средняя скорость ',v,' км/час')
end;
begin
var n:=ReadInteger('Количество дней:');
var s:=ReadReal('Длина трека, км:');
var (t0,th):=ReadReal2('Время в первый день и величина улучшения, мин:');
Phisics(n,t0,th,s)
end.
Результат
Количество дней: 7
Длина трека, км: 19
Время в первый день и величина улучшения, мин: 54 2
Средняя скорость 23.75 км/час