Составим уравнение это кусочной функции.
По непонятной мне причине, местный редактор формул внутри себя корректно отображает формулу, а при попытке сохранения её в ответ все рушится. Посему формула отправлена во вложение.
var
x, y: real;
begin
Write('Введите х: ');Readln(x);
if x <= -9 then y := 0
else if x < -6 then y := -sqrt(9 - sqr(x + 6))
else if x <= -3 then y := x + 3
else if x < 0 then y := sqrt(9 - sqr(x))
else if x <= 3 then y := 3 - x
else if x < 9 then y := (x - 3) / 2
else y := 3;
Writeln('y=', y)
end.
<em>
</em><em />В приведенной последовательности ошибка, там не 18, а 17.
<em>
// PascalABC.NET 3.2, сборка 1363 от 17.12.2016</em><em>// Внимание! Если программа не работает, обновите версию!</em>begin
var a,b,c,d:integer;
(a,b,c):=(1,1,1);
Print(a,b,c);
for var i:=1 to 20 do begin
d:=a+b+c; Print(d);
(a,b,c):=(b,c,d)
end;
Writeln
end.
<u>Результат</u>1 1 1 3 5 9 17 31 57 105 193 355 653 1201 2209 4063 7473 13745 25281 46499 85525 157305 289329
Блок-схема - в прилагаемом файле.
Смотрим на предназначение переменных L и M:
L - счетчик того, сколько раз выполняется условие цикла (while x > 0). Т.к. в конце программы L становится равным 2, значит условие цикла (while x > 0) выполняется 2 раза.
M, судя по условию (if M < x mod 10) - максимальная цифра числа x, т.к. x mod 10 - это остаток от деления числа x на десять.
В конце цикла while x приравнивается x div 10; кроме того, после 2 проходов цикла, x стало равным 0. Это дает нам право считать, что начальное число x было двузначным.
Т.к. в конце программы M становится равным 8, значит максимальная цифра в числе x - это 8.
Значит изначально число x могло быть равно:
18
28
38
48
58
68
78
80
81
82
83
84
85
86
87
88
<span>Т.к. требуется наибольшее, то выбираем <u>88</u>.</span>