Function F(x:integer):integer;



Повышенный уровень, время – 6 мин)

Тема: Анализ программы с подпрограммами.

Что нужно знать:

· функция – это вспомогательный алгоритм, который возвращает некоторое значение–результат

· в Паскале функция располагается выше основной программы и оформляется следующим образом (вместо многоточия могут быть любые операторы):

function F(x: integer):integer;

Begin

...

F := <результат функции>

end ;

· в заголовке функции записывают имя функции, в скобках – список параметров, далее через двоеточие – тип возвращаемого значения; в приведенном примере функция F принимает один целый параметр, к которому внутри функции нужно обращаться по имени x, и возвращает целое число

· результат функции записывается в специальную переменную, имя которой совпадает с именем функции; объявлять эту переменную не нужно

· если параметров несколько, для каждого из них указывают тип:

function F(x: integer; y: integer):integer;

· если несколько соседних параметров имеют одинаковый тип, можно их объединить в список:

function F(x, y: integer):integer;

· следующая программа ищет наименьшее значение функции F(x) на интервале [a,b], просматривая значения от a до b с шагом 1:

M:=a; R:=F(a);

for t:=a to b do

if F(t) < R then begin

R:=F(t); M:=t;

end;

· цикл для поиска наибольшего значения выглядит точно так же, только знак < нужно заменить на знак >

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

этот результат можно получить (вывести, если забыли), например, так:

§ в критической точке (точке минимума, точке максимума или точке перегиба) производная функции обращается в 0;

§ находим производную

§ приравниваем ее к нулю: .

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

Пример задания:

P-1 7. Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

Begin

F:= abs( abs(x-5) + abs(x+5) - 3) + 12;

end;

BEGIN

a:=-20; b:=20;

M:=a; R:=F(a);

for t:=a to b do begin

if (F(t)<R)then begin

M:=t;

R:=F(t);

end;

end;

write(M+R);

END.

Решение :

1) заметим, что в программе есть цикл, в котором переменная t принимает последовательно все целые значения в интервале от a до b:

for t:=a to b do begin

...

end;

2) до начала цикла в переменную M записывается значение a, а в переменную R – значение функции в точке a:

M:=a; R:=F(a);

3) внутри цикла есть условный оператор, в котором вычисляется значение функции F(t) и сравнивается со значением переменной R:

if (F(t)<R)then begin

M := t ;

R := F ( t );

end ;

если новое значение функции меньше, чем значение R, в R записывается значение функции в точке t, а в переменной M запоминается само значение t (аргумент функции, соответствующий значению в R)

4) в результате анализа пп. 1-3 можно сделать вывод, что цикл ищет минимум функции F(t) на интервале от a до b, и после выполнения цикла в переменной M оказывается значение аргумента t, при котором функция достигает минимума на заданном интервале (здесь это интервал [-20, 20])

5) запишем заданную функцию в привычном «математическом» виде:

f(x) = | | x – 5 | + | x + 5 |  – 3 | + 12

чтобы найти минимум этой функции без ручного перебора всех целых значений x, нам нужно представлять, как идёт её график

6) сначала рассмотрим функцию под знаком «большого» модуля g(x) = | x – 5 | + | x + 5 | – 3;

7) находим нули выражений под знаком модуля и отмечаем их на числовой оси:

8) раскрываем модули отдельно для каждого интервала; рассматриваем интервал (–¥; –5), раскрываем модули (оба с обратным знаком):

g(x) = – (x – 5) – (x + 5) – 3 = – 2x – 3

на этом интервале функция убывает

9) рассматриваем полуинтервал [–5; 5), раскрываем модули:

g(x) = – (x – 5) + (x + 5) – 3 = 7

это значит, что на полуинтервале [–5; 5) функция принимает постоянное значение

10) рассматриваем полуинтервал [5; ¥), раскрываем модули:

g(x) = (x – 5) + (x + 5) – 3 = 2x – 3

на этом интервале функция возрастает

график функции показан на рисунке справа

11) как мы показали, на всей числовой оси функция g(x) принимает положительные значения, так что | g(x) | = g(x), поэтому f(x) = |  g(x)  | + 12 = g(x) + 12

12) во всех точках на отрезке [-5; 5]  функции f(x) равно 7 + 12 = 19, поэтому программа найдёт одну из этих точек как точку минимума

13) осталось понять, какую именно точку она найдёт; посмотрим на программу: запоминание новой точки минимума происходит только тогда, когда только что вычисленное значение F(t) станет строго меньше, чем хранящееся в переменной R:

if (F(t)< R)then begin

M := t ;

R := F ( t );

end ;

14) поэтому после нахождения точки минимума x = –5 никаких изменений не произойдет, и в переменной M останется значение «–5»; таким образом, будет найдет первый минимум

(Примечание: если бы в условии было нестрогое неравенство (<=), была бы найдена последняя из точек с минимальной ординатой, M = 5)

15) обратим внимание, что на экран выводится не M, а M+R, поэтому результат будет равен

(–5) + 19 = 14

16) Ответ:  14.

Ещё пример задания:

P-16. Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

Begin

F:= abs( abs(x-5) + abs(x+5)- 20 ) + 4;

end;

BEGIN

a:=-20; b:=20;

M:=a; R:=F(a);

for t:=a to b do begin

if (F(t)<R)then begin

M:=t;

R:=F(t);

end;

end;

write(M+R);

END.

Решение :

1) заметим, что в программе есть цикл, в котором переменная t принимает последовательно все целые значения в интервале от a до b:

for t:=a to b do begin

...

end;

2) до начала цикла в переменную M записывается значение a, а в переменную R – значение функции в точке a:

M:=a; R:=F(a);

3) внутри цикла есть условный оператор, в котором вычисляется значение функции F(t) и сравнивается со значением переменной R:

if (F(t)<R)then begin

M := t ;

R := F ( t );

end ;

если новое значение функции меньше, чем значение R, в R записывается значение функции в точке t, а в переменной M запоминается само значение t (аргумент функции, соответствующий значению в R)

4) в результате анализа пп. 1-3 можно сделать вывод, что цикл ищет минимум функции F(t) на интервале от a до b, и после выполнения цикла в переменной M оказывается значение аргумента t, при котором функция достигает минимума на заданном интервале (здесь это интервал [-20, 20])

5) запишем заданную функцию в привычном «математическом» виде:

f(x) = | | x – 5 | + | x + 5 |  – 20 | + 4

чтобы найти минимум этой функции без ручного перебора всех целых значений x, нам нужно представлять, как идёт её график

6) сначала рассмотрим функцию под знаком «большого» модуля g(x) = | x – 5 | + | x + 5 | – 20;

7) находим нули выражений под знаком модуля и отмечаем их на числовой оси:

8) рассматриваем интервал (–¥; –5), раскрываем модули (оба с обратным знаком):

g(x) = – (x – 5) – (x + 5) – 20 = –2x – 20

на этом интервале функция g(x) убывает

9) рассматриваем полуинтервал [–5; 5), раскрываем модули:

g(x) = – (x – 5) + (x + 5) – 20 = – 10

на этом интервале значение функции g(x) постоянно

10) рассматриваем полуинтервал [5; ¥), раскрываем модули:

g(x) = (x – 5) + (x + 5) – 20 = 2x – 20

на этом интервале функция g(x) возрастает

график функции g(x) показан на рисунке справа

11) как видно по графику, на интервале (–10; 10) функция имеет отрицательные значения; найти границы этого интервала можно решив уравнения

g(x) = –2x – 20 = 0 Þ x = – 10

g(x) = 2x – 20 = 0 Þ x = 10

12) поскольку f(x) = |  g(x)  | + 4, за счёт модуля «язык», вылезший вниз за ось OX, загнётся вверх, так что функция f(x) будет иметь минимальные значения, равные 4, как раз в точках x = – 10 и x = 10 (см. рисунок справа)

13) осталось понять, какую именно точку она найдёт; посмотрим на программу: запоминание новой точки минимума происходит только тогда, когда только что вычисленное значение F(t) станет строго меньше, чем хранящееся в переменной R:

if (F(t) < R)then begin

M := t ;

R := F ( t );

end ;

14) поэтому в точке второго минимума x = 10 никаких изменений не произойдет, и в переменной M останется значение «–10»; таким образом, будет найдет первый минимум

(Примечание: если бы в условии было нестрогое неравенство (<=), была бы найдена последняя из точек с минимальной ординатой, M = 10)

15) обратим внимание, что на экран выводится не M, а M+R, поэтому результат будет равен

(–10) + 4 = – 6

16) Ответ: – 6.

Ещё пример задания (досрочный ЕГЭ-2017):

P-15. Напишите в ответе число, равное количеству различных значений входной переменной k, при которых приведённая ниже программа выводит тот же ответ, что и при входном значении k = 25. Значение k = 25 также включается в подсчёт количества различных значений k.

var k, i : longint;

function f(n: longint) : longint;

Begin

f := n * n * n;

end;

Begin

readln(k);

i := 1;

while f(i) < k do

i := i+1;

if f(i)-k <= k-f(i-1) then

Writeln(i)

Else writeln(i-1)

End.

Решение (И. Щеголяева):

1) Определяем, что будет напечатано при .

i 1 2 3  
f(i) 1 8 27  
f(i) < k + +  
f(i) – k £ kf(i-1)       27-25 £ 25-8, верно
Вывод на экран       3

2) Следовательно, последнее значение переменной i может быть равно 3, если условие  истинно или может быть равно 4, если условие ложно. Т.е. при i=3 должно выполняться условие при i = 4 должно выполняться условие

3) Найдем левую границу. Преобразуем первое выражение:

Поскольку значение k должно быть целым, то k ³ 18.

4) Найдем правую границу. Преобразуем второе выражение:

Поскольку значение k должно быть целым, то k £ 45.

5) Таким образом, , т.е всего 28 различный значений.

6) Ответ: 28.

Ещё пример задания (Д. Муфаззалов, Белград):

P-14. Напишите в ответе количество различных значений входной переменной a из интервала от 1 до 100 (включая границы), при которых программа выдаёт тот же ответ, что и при входном значении a = 20. Значение a = 20 также включается в подсчёт различных значений a.

var i , k , a : integer ;

function f(x: integer): integer;

Begin

if x >1 then

f := x mod 2 * f(x div 2)

Else

f := x;

end;

Begin

k := 0;

Readln(a);

for i := 1 to a do

if f(i) =1 then k:=k+1;

Writeln(k);

End.

Решение :

1) Рассмотрим, как работает функция, приведенная в программе. Заметим, что (x mod 2) – младшая цифра двоичного представления числа х в двоичной системе счисления, (x div 2) – число х без младшей своей цифры в двоичном представлении.

2) Таким образом, функция находит произведение цифр числа в двоичном представлении. Программа в целом находит количество чисел, произведение цифр в двоичной записи которых равно 1, то есть таких чисел, двоичная запись которых не содержит нулей.

3) В общем виде такие числа можно представить, как 2n-1, где n – натуральное число. В диапазоне от 1 до 20 таких чисел 4: 1, 3, 7, 15. А в диапазоне от 1 до 100 – 6: 1, 3, 7, 15, 31, 63.

4) Таким образом, искомые числа – это числа от 15 до 30.

5) Ответ: 16.

Ещё пример задания (Д. Муфаззалов, Белград):

P-13. Какое число будет напечатано в результате выполнения программы?

var i, k: integer;

function f(x: integer): integer;

Begin

if x > 0 then

f := x mod 2 + f(x div 2)

Else

f := 0;

end;

Begin

k := 0;

for i := 0 to 1023 do

if f(i mod 32) = 1 then

if f(i div 32) = f(i mod 32) then k := k + 1;

writeln(k);

End.

Решение :

1) Рассмотрим, как работает функция, приведенная в программе. Заметим, что (x mod 2) – младшая цифра двоичного представления числа х в двоичной системе счисления, (x div 2) – число х без младшей своей цифры в двоичном представлении, (i mod 32) - число, составленное из пяти младших битов двоичной записи числа i, (i div 32) – число, составленное из пяти старших битов двоичной записи числа i. Таким образом, функция считает сумму цифр двоичной записи аргумента.

2) В основной части программы рассматриваются числа от 1 до 1023, счетчик увеличивается на 1, если сумма цифр в младших пяти разрядах двоичного представления числа равна 1, и сумма цифр в старших пяти разрядах двоичного представления числа тоже равна 1.

3) Таким образом, необходимо найти количество чисел, в двоичной записи которых в младших пяти разрядах и в старших пяти разрядах находится ровно по одной единице.

4) Дополняя двоичное представление чисел до 10 битов, получим, что старшая единица может располагаться на 5 позициях; в каждом таком случае младшая единица может тоже располагаться на пяти позициях. Тогда количество таких чисел равно 5*5=25.

5) Ответ: 25.

Ещё пример задания (Д. Муфаззалов, Белград):

P-12. Сколько существует таких четырехзначных натуральных чисел, что при вводе их программа выведет такое же число, что и при вводе числа 1133. Значение 1133 также включается в подсчёт.

function f ( x : integer ): integer ;

Begin

if x mod 2 =1 then

f := x mod 10 + f(x div 10)

Else

f := 0;

end;

var N: integer;

Begin

readln(n);

Writeln(f(N));

End.

Решение :

1) В первую очередь необходимо разобраться, как работает описанная в программе функция. Заметим, что функция рекурсивная, (x div 10) – это число х без последней своей цифры, a (x mod 2) – остаток от деления х на 2, то есть признак делимости этого числа (и его младшей цифры) на 2.

2) Если на вход функции подается число, младшая цифра которого четная, то функция возвращает 0, иначе она возвращает сумму этой цифры и значения функции от аргумента без последней цифры. Если, например, подать на вход функции число, содержащее только нечетные цифры, она возвратит сумму эти цифр (при целочисленном делении на 10 старшей цифры получится 0, что завершит рекурсию). Таким образом, функция f возвращает сумму первой непрерывной последовательности нечетных цифр числа х, начиная с младшей.

3) Для входного числа 1133 значение функции равно 8. Это значение можно было получить и при ручном выполнении программы, но это не дало бы понимания работы функции.

4) Найдем в требуемом диапазоне числа, у которых сумма непрерывной последовательности нечетных цифр, начиная с младшей, равна 8. Сумма состоит не более, чем из четырех слагаемых. Покажем, что при разложении числа 8 на нечетные слагаемые могут возникнуть суммы только из двух или четырех цифр: действительно, если сложить три нечетных числа, то и сумма будет нечетной, а единственное нечетное число не может быть равным 8.

5) Сначала найдем разложение числа 8 на сумму четырех нечетных цифр: 8=1+1+3+3. Количество чисел, состоящих из этих цифр, равно 6. Другое разложение: 8=5+1+1+1; количество чисел, составленных из этих цифр, равно 4. 

6) Теперь найдем разложения числа 8 на два нечетных слагаемых: 8=5+3 и 8=7+1. Старшая цифра в искомых числах может принимать 9 значений (от 1 до 9), вторая цифра – любое четное значение (5 штук). Таким образом, количество чисел с последовательностью нечетных цифр, начиная с младшей, длиной 2 и суммой 8 есть 9*5*2*2=180.

7) Ответ: 190.

Ещё пример задания:

P-11. Напишите в ответе наименьшее значение входной переменной k, при котором программа выдаёт тот же ответ, что и при входном значении k = 10.

var k, i : longint;

function f(n: longint): longint;

Begin

f := n * n * n;

end;

function g(n: longint): longint;

Begin

g := 2*n + 3;

end;

Begin

readln(k);

i := 1;

while f(i) < g(k) do

i := i+1;

Writeln(i)

End.

Решение :

1) сначала заметим, что функция f возвращает куб переданного ей числа, а функция g – результат вычисления 2*n+3

2) при некотором i работа цикла останавливается: это происходит при нарушении условия

f(i)<g(k), то есть при выполнении обратного условия f(i)³g(k)

3) в то же время на предыдущем шаге цикла (для i-1) условие его работы выполнялось, то есть

f(i-1)<g(k), откуда получаем

f(i-1)<g(k)£f(i)

4) вспоминая, что f(i)=i3, делаем вывод, что g(k) должно быть между кубами двух соседних чисел: (i-1)3 < g(k) £ i3

5) для заданного k=10 находим g(10)=2·10+3=23, так что i=3:

(2)3 < g(k)=23 £ 33

6) осталось проверить, при каких k выполняется условие

8 < g(k)=2k+3 £ 27

7) решая двойное неравенство относительно k получаем

2,5 < k £ 12

8) таким образом, минимальное целое число, соответствующее условию – 3.

9) Ответ: 3.

Ещё пример задания:

P-10. Напишите в ответе число, равное количеству различных значений входной

переменной k, при которых приведённая ниже программа выводит тот же

ответ, что и при входном значении k = 10. Значение k = 10 также включается

в подсчёт различных значений k.

var k, i : longint;

function f(n: longint) : longint;

Begin

f := n * n * n;

end;

Begin

readln(k);

i := 1;

while f(i) < k do

i:= i+1;

if f(i)-k <= k-f(i-1) then

Writeln(i)

else writeln(i-1);

End.

Решение:

1) сначала заметим, что функция f возвращает куб переданного ей числа

2) после ввода k работает цикл, который увеличивает i до тех пор, пока значение куба f(i) не станет больше или равно k – тогда нарушится условие f(i)<k и цикл завершится

3) построим таблицу значений функции f(i) (кубов чисел):

i f(i) Цикл завершается для …
1 1 k=1
2 8 k=2,... , 8
3 27 k =9,...,27

4) таким образом, при k=10 цикл завершится при i=3

5) главная «новинка» – в условном операторе

if f(i)-k <= k-f(i-1) then

Writeln(i)

else writeln(i-1);

6) например, при k=10 и i=3 условие

f ( i )- k <= k - f ( i -1)

27-10 <= 10-8

17 <= 2

неверно, из-за этого выводится на экран не i, а i-1, то есть 2

7) итак, нам нужно найти, сколько значений k дадут на выходе 2

8) посмотрим внимательно на условие в условном операторе, преобразуем его к виду

f(i) +f(i-1) <= 2k

9) тогда при выполнении обратного условия,

2k < f(i)+f(i-1)

k < (f(i)+f(i-1))/2

выводится число i-1 вместо i

10) составим еще одну таблицу:

i (f ( i )+f(i-1) )/2 Выводится i-1 для … Выводится i для …
2 4,5 k =2,...,4 k =5,..., 8
3 17, 5 k=9 ,...,17 k =1 8 ,..., 27

11) таким образом, в этой задаче нам подходят числа в диапазоне [5;17], всего их 17-5+1 = 13

12) Ответ: 13.

Решение (вариант 2, Д. Муфаззалов, Уфа):

1)  Сначала определим, какое число выводит программа при входном значении k = 10. Для этого определим, чему равно значение переменной i после выхода из цикла. Из принципа работы цикла while получим систему неравенств:

Решим ее в натуральных числах (по программе i увеличивается в цикле на 1, начиная с 1):

,  =3.

17> 2, логическое выражение в операторе if ложно, поэтому программа выводит на экран число 2.

2) Чтобы программа выводила число 2, после выхода цикла значение переменной i должно быть равно 2 или 3, при этом должны выполняться соответствующие условия из оператора if.

3) Рассмотрим случай, когда после выхода цикла значение переменной i равно 2. Тогда имеет место следующая система неравенств:

.

Решая ее в целых числах (по программе k – целое), получим:

 .

Целых чисел, удовлетворяющих этой системе, 4.

4) Рассмотрим случай, когда после выхода цикла значение переменной i равно 3. Тогда имеет место следующая система неравенств:

.

Решая ее в целых числах, получим:

.

Целых чисел, удовлетворяющих этой системе, 9.

5) Так как полученные множества не пересекаются, получаем ответ 4+9=13

6) Ответ: 13.

Ещё пример задания:

P-09. Определите, какое значение H нужно ввести, чтобы число, напечатанное в результате выполнения следующего алгоритма, было наименьшим.

var a,b,t,M,R,H :integer;

Function F(H, x: integer):integer;

Begin

F := 11*(x-H)*(x-H)+13;

end;

BEGIN

readln(H);

a := -10; b := 30;

M := a; R := F(H, a);

for t := a to b do begin

if (F(H, t) > R) then begin

M := t;

R := F(H, t)

End

end;

Write(R)

END.

Решение:

1) заметим, величина H в программе не изменяется, то есть фактически выполняет роль константы; она передаётся в функцию и влияет на значение функции

2) что в программе есть цикл, в котором переменная t принимает последовательно все целые значения в интервале от a до b:

for t:=a to b do begin

...

end;

3) до начала цикла в переменную M записывается значение a, а в переменную R – значение функции в точке a:

M:=a; R:=F( H, a);

4) внутри цикла есть условный оператор, в котором вычисляется значение функции F(t) и сравнивается со значением переменной R:

if (F(H,t) > R)then begin

M := t ;

R := F ( H , t )

end ;

если новое значение функции больше, чем значение R, в R записывается значение функции в точке t, а в переменной M запоминается само значение t (аргумент функции, соответствующий значению в R)

5) в результате анализа пп. 1-3 можно сделать вывод, что цикл ищет максимум функции F(H,t) на интервале от a до b

6) заметим, что выводится значение R, а величина M не выводится и не влияет на вычисление R, поэтому можно не обращать на неё внимания

7) функция F вычисляет значение

F:=11*(x-H)*(x- H ) + 13 ;

8) график этой эта функции – парабола с ветвями, направленными вверх (коэффициент при x2 = 11 > 0)

9) вершина параболы находится в точке x = H, ветви идут симметрично влево и вправо вверх

10) при изменении H парабола двигается влево или вправо (но не вверх-вниз!)

11) итак, мы ищем максимальное значение квадратичной функции, и хотим, чтобы это значение было наименьшим

12) давайте подвигаем параболу в пределах отрезка [a; b]:

13) видно, что минимальное значение максимума будет тогда, когда вершина параболы будет расположена точно в середине отрезка [a; b]

14) отсюда требуемое значение H равно среднему арифметическому между a = –10 и b = 30:

H = (–10 + 30) / 2 = 10

15) Ответ: 10.

Ещё пример задания (И. Тощенко):

P-08. Напишите в ответе число различных значений входной переменной k, при которых программа выдаёт тот же ответ, что и при входном значении k = 35. Значение k = 35 также включается в подсчёт различных значений k.

var k , i : longint ;

function F(x: longint) : longint;

Begin

F:=2*x*x+3*x+2

end;

Begin

i := 15;

readln(K);

while (i> 0) and (F(i) > K) do

i:=i-1;

Writeln(i)

End.

Решение (И. Тощенко):

1) Вычислим значения функции F при i=1,2,3…

i=0: f(0)=2

i=1: f(1)=7

i=2: f(2)=16

i=3: f(3)=29

i=4: f(4)=46

2) Заданное значение К попадает в отрезок [29;45].

3) Следовательно, всего 45-29+1=17 чисел.

4) ответ: 17.

Ещё пример задания:

P-07. Напишите в ответе число различных значений входной переменной k, при которых программа выдаёт тот же ответ, что и при входном значении k = 64. Значение k = 64 также включается в подсчёт различных значений k.

var k , i : longint ;

function f(n: longint) : longint;

Begin

f := n * n

end;

Begin

readln(k);

i := 12;

while (i>0) and (f(i)>=k) do

i := i-1;

Writeln(i)

End.

Решение :

1) заметим, что функция F(x) вычисляет квадрат переданного ей числа

2) в теле основной программы выполняется цикл с условием, который заканчивается, когда значение функции станет меньше k

3) на каждом шаге цикла уменьшается значение переменной i, начиная с 12; цикл также заканчивается, когда значение переменной i станет равно 0

4) после окончания цикла программа выводит значение переменной i.

5) итак, функция выводит первое натуральное значение i, квадрат которого меньше, чем введённое с клавиатуры значение переменной k

6) при k = 64 программа выведет значение 7, поскольку это наибольшее натуральное число, квадрат которого меньше, чем 64

7) фактически нужно ответить на вопрос: сколько есть таких чисел k, которые меньше или равны 82 = 64 и больше, чем 72 = 49 (легко проверить, что при k=65 программа выведет значение 8, в при k=49 – значение 6)

8) в диапазоне [50;64] всего 64-50+1=15 чисел, это и есть правильный ответ.

9) ответ: 15.

Ещё пример задания:

P-06. Определите, количество чисел K, для которых следующая программа выведет такой же результат, что и для K = 24:

var i, k: integer;

function F(x:integer):integer;

Begin

F:=x*x*x;

end;

Begin

i := 12;

readln(K);

while (i>0) and (F(i) > K) do

i:=i-1;

Writeln(i);

End.

Решение:

1) заметим, что функция F(x) вычисляет куб переданного ей числа

2) перед началом цикла значение переменной i равно 12, в цикле оно уменьшается

3) цикл while останавливается, когда переменная i становится равна нулю или значение функции F(i) становится меньше или равно K

4) таким образом, в данной фактически требуется найти количество натуральных чисел в диапазоне [1..12], куб которых больше, чем K = 24

5) определим, у скольких чисел куб меньше, чем 24; это все числа, меньшие, чем , то есть, только числа 1 и 2; поэтому программа выведет 2 – первое число, куб которого меньше или равен 24

6) остаётся определить, когда программа выведет именно 2; это случится при всех K, при которых , то есть при ; в этот диапазон входит 27-8 = 19 чисел

7) Ответ: 19.

Ещё пример задания:

P-05. Определите, количество чисел K, для которых следующая программа выведет такой же результат, что и для K = 24:

var i, k: integer;

function F(x:integer):longint;

Begin

if x = 1 then

  F:=1

else F:=x*F(x-1);

end;

Begin

i := 12;

readln(K);

while (i>0) and (F(i) > K) do

i:=i-1;

Writeln(i);

End.

Решение:

1) заметим, что рекурсивная функция F(x) вычисляет факториал переданного ей числа, то есть произведение x!=1×2×3×...×(x-1) ×x

2) повторяя рассуждения предыдущей задачи, определяем, что функция выведет количество натуральных чисел, факториалы которых меньше или равны K

3) выпишем факториалы первых натуральных чисел:

1! = 1, 2! = 2, 3! = 6, 4! = 24, 5! = 120, 6! = 720, …

4) из этого ряда факториалы первых четырех чисел меньше или равны 24, поэтому при K=24 функция выведет число 4

5) программа выведет именно 4 при всех K, при которых , то есть при ; в этот диапазон входит 120-24 = 96 чисел

6) Ответ: 96.

Ещё пример задания:

P-04. Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a, b, t, N, P :integer;

Function F(x: integer):integer;

Begin

F := 16*(9-x)*(9-x)+127;

end;

BEGIN

a := -25; b := 25;

P := 130;

N := 0;

for t := a to b do begin

if (F(t) > P) then begin

N := N+1;

end;

end;

  write(N);

END.

Решение :

1) заметим, что в конце работы программы на экран выводится значение переменной N

2) в программе значение N сначала обнуляется, а затем на каждом шаге цикла увеличивается на 1 при условии, что значение функции F(t) больше значения P = 130; таким образом, N – это счётчик точек с целочисленными значениями на отрезке [-25;25], в которых значение функции больше, чем 130

3) график функция 16*(9-x)*(9-x)+127 – парабола с ветвями вверх, минимальное значение в точке x = 9 равно 127

4) значение функции при x = 8 и x = 10 (рядом с точкой минимума) равны 16+127 = 143, поэтому только в одной точке x = 9 не выполняется условие F(t) > P

5) всего на интервале [-25;25] есть 51 точка с целочисленными координатами; во всех, за исключением одной условие F(t) > P выполняется, то есть счётчик увеличивается на 1

6) Ответ: 50.

Ещё пример задания:

P-03. Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

Begin

F:=(x*x-4)*(x*x-4)+6;

end;

BEGIN

a:=-10; b:=10;

M:=a; R:=F(a);

for t:=a to b do begin

if (F(t)<R)then begin

M:=t;

R:=F(t);

end;

end;

write(M +6 );

END.

Решение:

17) заметим, что в программе есть цикл, в котором переменная t принимает последовательно все целые значения в интервале от a до b:

for t:=a to b do begin

...

end;

18) до начала цикла в переменную M записывается значение a, а в переменную R – значение функции в точке a:

M:=a; R:=F(a);

19) внутри цикла есть условный оператор, в котором вычисляется значение функции F(t) и сравнивается со значением переменной R:

if (F(t)<R)then begin

M := t ;

R := F ( t );

end ;

если новое значение функции меньше, чем значение R, в R записывается значение функции в точке t, а в переменной M запоминается само значение t (аргумент функции, соответствующий значению в R)

20) в результате анализа пп. 1-3 можно сделать вывод, что цикл ищет минимум функции F(t) на интервале от a до b, и после выполнения цикла в переменной M оказывается значение аргумента t, при котором функция достигает минимума на заданном интервале (здесь это интервал [-10, 10])

21) функция, которая используется в программе, – это квадратичная парабола: , её ветви направлены вверх (коэффициент при  положительный, равен 1); она имеет два минимума в точках  и

22) обе точки минимума находятся на отрезке [-10;10], поэтому программа найдёт одну из этих точек; вопрос: какую именно?

23) для квадратичной параболы обе точки минимума имеют одинаковую -координату, а запоминание новой точки минимума происходит только тогда, когда только что вычисленное значение F(t) станет строго меньше, чем хранящееся в переменной R:

if (F(t) < R)then begin

M := t ;

R := F ( t );

end ;

24) поэтому в точке второго минимума  никаких изменений не произойдет, и в переменной M останется значение «–2»; таким образом, будет найдет первый минимум

25) обратим внимание, что на экран выводится не M, а M+6, поэтому результат будет равен

(-2)+6=4

26) Ответ: 4.

Ещё пример задания:

P-02. Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

Begin

F:=4*(x-1)*(x-3);

end;

BEGIN

a:=-20; b:=20;

M:=a; R:=F(a);

for t:=a to b do begin

if (F(t)<R)then begin

M:=t;

R:=F(t);

end;

end;

write(M);

END.

Решение (способ 1, ручная прокрутка, перебор):

16) заметим, что в программе есть цикл, в котором переменная t принимает последовательно все целые значения в интервале от a до b:

for t:=a to b do begin

...

end;

17) до начала цикла в переменную M записывается значение a, а в переменную R – значение функции в точке a:

M:=a; R:=F(a);

18) внутри цикла есть условный оператор, в котором вычисляется значение функции F(t) и сравнивается со значением переменной R:

if (F(t)<R)then begin

M := t ;

R := F ( t );

end ;

если новое значение функции меньше, чем значение R, в R записывается значение функции в точке t, а в переменной M запоминается само значение t (аргумент функции, соответствующий значению в R)

19) в результате анализа пп. 1-3 можно сделать вывод, что цикл ищет минимум функции F(t) на интервале от a до b, и после выполнения цикла в переменной M оказывается значение аргумента t, при котором функция достигает минимума на заданном интервале (здесь это интервал [-20, 20])

20) функция F вычисляет значение

F:=4*(x-1)*(x-3);

21) перебираем все значения t от a до b, и для каждого вычисляем соответствующее значение функции:

t -20 -19 -18 -17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0
F 1932 1760 1596 1440 1292 1152 1020 896 780 672 572 480 396 320 252 192 140 96 60 32 12
                                         
t 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20  
F 0 -4 0 12 32 60 96 140 192 252 320 396 480 572 672 780 896 1020 1152 1292  

22) по таблице находим, что минимальное значение –4 достигается при t=2

23) таким образом, ответ: 2.

Возможные проблемы: · заполнение таблицы, особенно при большом интервале, очень трудоемко, велика возможность ошибки

Решение (способ 2, математический анализ):

1) повторяя рассуждения пп. 1-5 из предыдущего способа решения, находим, что программа ищет значение t, при котором функция F(t) принимает минимальное значение на интервале от a до b.

2) запишем функцию в виде квадратного трёхчлена:

3) график этой функции – парабола, оси которой направлены вверх, поэтому функция имеет минимум

4) найдем абсциссу точки минимума, которая совпадает с абсциссой точки минимума функции

5) таким образом, ответ: 2.

Решение (способ 3, математический анализ, свойства параболы):

1) повторяя рассуждения пп. 1-5 из первого способа решения, находим, что программа ищет значение t, при котором функция F(t) принимает минимальное значение на интервале от a до b.

2) заданная функция имеет корни в точках

3) график этой функции – парабола, оси которой направлены вверх (коэффициент при  равен 4 > 0), поэтому функция имеет минимум

4) парабола симметрична относительно вертикальной прямой, проходящей через вершину, поэтому абсцисса вершины – это среднее арифметическое корней:

5) таким образом, ответ: 2.

Ещё пример задания:

P-01. Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

Begin

F:=x*x + 4*x + 8;

end;

BEGIN

a:=-10; b:=10;

M:=a; R:=F(a);

for t:=a to b do begin

if (F(t)> R)then begin

M:=t;

R:=F(t);

end;

end;

write(R);

END.

Решение:

1) рассуждая так же, как и в предыдущем примере, можно показать, что программа ищет наибольшее значение функции F(t) на интервале от a до b

2) заметим, что выводится не абсцисса, а именно это найденное наибольшее значение функции:

write(R);

3) график заданной функции  – это парабола, ветви которой направлены вверх, то есть она имеет точку минимума, но не точку максимума

4) поэтому нужно проверить значения функции на концах отрезка и выбрать из них наибольшее

5) при t=-10 получаем F(t)=68

6) при t=10 получаем F(t)=148

7) таким образом, ответ: 148.

Еще пример задания (Л.А. Тумарина, г. Электросталь):

P-00. Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

Begin

F:=4*(x-1)*(x-3);

end;

BEGIN

a:=-20; b:=0;

M:=a; R:=F(a);

for t:=a to b do begin

if (F(t)<R)then begin

M:=t;

R:=F(t);

end;

end;

write(M);

END.

Решение:

1) рассуждая так же, как и в примере 1, определяем, что программа ищет значение t, при котором функция F(t) принимает минимальное значение на интервале от a до b.

2) запишем функцию в виде квадратного трёхчлена:

3) график этой функции – парабола, оси которой направлены вверх, поэтому функция имеет минимум

4) найдем абсциссу точки минимума, которая совпадает с абсциссой точки минимума функции

8) однако это значение не входит в интервал [-20; 0], поэтому нужно проверить значения функции на концах отрезка и выбрать из них наименьшее; ответом будет соответствующее значение t.

9) при t=-20 получаем F(-20)=4*(-21)*(-23)=1932

10) при t=0 получаем F(0)= 4*(-1)*(-3)=12, это значение меньше, чем F(-20), поэтому минимум на заданном интервале достигается при t=0

5) таким образом, ответ: 0

 


Задачи для тренировки[1]:

1) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

Begin

F:=4*(x-5)*(x+3);

end;

BEGIN

a:=-20; b:=20;

M:=a; R:=F(a);

for t:=a to b do begin

if (F(t)<R)then begin

M:=t;

R:=F(t);

end;

end;

write(M);

END.

2) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

Begin

F:=-(x+4)*(x+2);

end;

BEGIN

a:=-20; b:=20;

M:=a; R:=F(a);

for t:=a to b do begin

if (F(t)>R)then begin

M:=t;

R:=F(t);

end;

end;

write(M);

END.

3) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

Begin

F:=3*(x-2)*(x+6);

end;

BEGIN

a:=-20; b:=20;

M:=a; R:=F(a);

for t:=a to b do begin

if (F(t)<R)then begin

M:=t;

R:=F(t);

end;

end;

write( R );

END.

4) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

Begin

F:=(5-x)*(x+3);

end;

BEGIN

a:=-20; b:=20;

M:=a; R:=F(a);

for t:=a to b do begin

if (F(t)>R)then begin

M:=t;

R:=F(t);

end;

end;

write( R );

END.

5) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

Begin

F:=(x-5)*(x+3);

end;

BEGIN

a:=-5; b:=5;

M:=a; R:=F(a);

for t:=a to b do begin

if (F(t)>R)then begin

M:=t;

R:=F(t);

  end;

end;

write( M );

END.

6) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

Begin

F:=(x+5)*(x+3);

end;

BEGIN

a:=-5; b:=5;

M:=a; R:=F(a);

for t:=a to b do begin

if (F(t)>R)then begin

M:=t;

R:=F(t);

end;

end;

write( R );

END.

7) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

Begin

F:=(x+7)*(1-x);

end;

BEGIN

a:=-5; b:=5;

M:=a; R:=F(a);

for t:=a to b do begin

if (F(t)< R)then begin

M:=t;

R:=F(t);

end;

end;

write( M );

END.

8) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

Begin

F:=(x+5)*(1-x);

end;

BEGIN

a:=-5; b:=5;

M:=a; R:=F(a);

for t:=a to b do begin

if (F(t)< R)then begin

M:=t;

R:=F(t);

end;

end;

write( M );

END.

9) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

Begin

F:=(x+3)*(1-x);

end;

BEGIN

a:=-5; b:=5;

M:=a; R:=F(a);

for t:=a to b do begin

if (F(t)< R)then begin

M:=t;

R:=F(t);

end;

end;

write( R );

END.

10) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

Begin

F:= 2*x*x + 8*x + 10;

end;

BEGIN

a:=-10; b:=10;

M:=a; R:=F(a);

for t:=a to b do begin

if (F(t)< R)then begin

M:=t;

R:=F(t);

end;

end;

write( M );

END.

11) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

Begin

F:= x*x + 6*x + 10;

end;

BEGIN

a:=-10; b:=10;

M:=a; R:=F(a);

for t:=a to b do begin

if (F(t)> R)then begin

M:=t;

R:=F(t);

end;

end;

write( M );

END.

12) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

Begin

F:= x*x - 8*x + 10;

end;

BEGIN

a:=-5; b:=5;

M:=a; R:=F(a);

for t:=a to b do begin

if (F(t)> R)then begin

M:=t;

R:=F(t);

end;

end;

write( R );

END.

13) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

Begin

F:= x*x + 2*x + 10;

end;

BEGIN

a:=-10; b:=10;

M:=a; R:=F(a);

for t:=a to b do begin

if (F(t)< R)then begin

M:=t;

R:=F(t);

end;

end;

write( M );

END.

14) (Л.А. Тумарина) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

Begin

F:=4*(x-5)*(x+3);

end;

BEGIN

a:=-20; b:=0;

M:=a; R:=F(a);

for t:=a to b do begin

if (F(t)<R)then begin

M:=t;

R:=F(t);

end;

end;

write(M);

END.

15) (Л.А. Тумарина) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

Begin

F:= 2*x*x + 8*x + 10;

end;

BEGIN

a:=0; b:=10;

M:=a; R:=F(a);

for t:=a to b do begin

if (F(t)< R)then begin

M:=t;

R:=F(t);

end;

end;

write( R );

END.

16) (Л.А. Тумарина) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

Begin

F:=-(x+4)*(x+2);

end;

BEGIN

a:=-2; b:=20;

M:=a; R:=F(a);

for t:=a to b do begin

if (F(t)>R)then begin

M:=t;

R:=F(t);

end;

end;

write(M);

END.

17) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

Begin

F := 2*(x-9)*(x-9)+12;

end;

BEGIN

  a := -20; b := 20;

M := a; R:= F(a);

for t := a to b do

if (F(t)<R) then begin

M := t;

R:= F(t);

end;

write(M);

END.

18) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

Begin

F := 9*(x-15)*(x+17)+2;

end;

BEGIN

a := -20; b := 20;

M := a; R:= F(a);

for t := a to b do

if (F(t)<R) then begin

M := t;

R:= F(t);

end;

write(M);

END.

19) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

Begin

F := -3*(x-10)*(x+2)+2;

end;

BEGIN

a := -20; b := 20;

M := a; R:= F(a);

for t := a to b do

if (F(t)>R) then begin

M := t;

  R:= F(t);

end;

write(M);

END.

20) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

Begin

F := 5*(x+10)*(x+2)+2;

end;

BEGIN

a := -20; b := 20;

M := a; R:= F(a);

for t := a to b do

if (F(t)<R) then begin

M := t;

R:= F(t);

end;

write(M);

END.

21) (А. Лаздин) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

Begin

F := -2*(x+2)*(x-6);

end;

Begin

a := -11; b := 11;

M := a; R:= F(a);

t:=a;

while t < b do

Begin

if (F(t)>R) then

Begin

M := t;

R:= F(t);

end;

t:=t+2;

end;

write(R);

End.

22) (А. Лаздин) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

Begin

F := -2*(x+2)*(x-6);

end;

Begin

a := -11; b := 11;

M := a; R:= F(a);

t:=a;

while t < b do

Begin

if (F(t)>R) then

Begin

M := t;

R:= F(t);

end;

t:=t+2;

end;

write(M);

End.

23) (А. Лаздин) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

Begin

F := -2*(x+2)*(x-6);

end;

Begin

a := -11; b := 11;

M := a; R:= F(a);

t:=a;

while t < b do

Begin

if (F(t)>=R) then

Begin

M := t;

R:= F(t);

end;

t:=t+2;

end;

write(M);

End.

24) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x:integer):integer;

Begin

F := 3*(x-8)*(x-8)

end;

Begin

a := -20; b := 20;

M := a; R:= F(a);

for t := a to b do begin

if (F(t)<R) then begin

M := t;

 R:= F(t)

End

end;

write(M);

End.

25) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

Begin

F := 19*(16-x)*(16-x)+27;

end;

BEGIN

a := -20; b := 20;

M := a; R:= F(a);

for t := a to b do begin

if (F(t) < R) then begin

M := t;

R:= F(t);

end;

end;

write(M);

END.

26) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

Begin

F := 19*(11-x)*(11-x)+27;

end;

BEGIN

a := -20; b := 20;

M := a; R:= F(a);

for t := a to b do begin

if (F(t) < R) then begin

M := t;

R:= F(t);

end;

end;

write(R);

END.

27) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

Begin

F := 16* (9-х)*(9-х)+127;

end;

BEGIN

a:= -20; b:= 20;

M:= a; R:= F(a) ;

for t:=a to b do begin

if F(t) < R then begin

M:= t;

R:= F(t);

end;

end;

write(R);

END.

28) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

Begin

F := 15*(5+x)*(5+x)+125;

end;

BEGIN

  a := -25; b := 25;

M := a; R:= F(a);

for t := a to b do begin

if F(t) > R then begin

M := t;

R:= F(t);

end;

end;

writeln(M);

END.

29) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

Begin

F := 26*(9+х)*(9+х)+131;

end;

BEGIN

a:= -20; b:= 20;

M:= a; R:= F(a);

for t:=a to b do begin

if F(t) < R then begin

M:= t;

R:= F(t);

end;

end;

write(R);

END.

30) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

Begin

F := 10*(5-x)*(5-x)+120;

end;

BEGIN

  a := -20; b := 20;

M := a; R:= F(a);

for t := a to b do begin

if F(t) > R then begin

M := t;

R:= F(t);

end;

end;

writeln(M);

END.

31) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

Begin

F := 19-19*(x-1)*(x-1);

end;

BEGIN

  a := 10; b := 20;

M := a; R:= F(a);

for t := a to b do begin

if F(t) > R then begin

M := t;

R:= F(t);

end;

end;

writeln(M);

END.

32) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

Begin

F := 6*(x+10)*(x+10)+30;

end;

BEGIN

a := -5; b := 20;

M := a; R:= F(a);

for t := a to b do begin

if F(t) > R then begin

M := t;

R:= F(t);

end;

end;

writeln(R);

END.

33) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

Begin

F := 281 - 2*(17+x)*(17+x);

end;

BEGIN

a := -7; b := 25;

M := a; R:= F(a);

for t := a to b do begin

if F(t) > R then begin

M := t;

R:= F(t);

end;

end;

writeln(R);

END.

34) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R :integer;

Function F(x:integer):integer;

Begin

F := (x*x-9)*(x*x-9)+5 end;

Begin

a := -13; b := 13; M := a; R := F (a) ;

for t := a to b do

if (F(t) < R) then begin

M := t; R := F(t)

end;

write(M+7)

End.

35) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R :integer;


Дата добавления: 2021-04-07; просмотров: 89; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!