Определите, какое число будет напечатано в результате выполнения следующего алгоритма:
| Бейсик | Паскаль |
|---|---|
DIM A, B, T, M, R AS INTEGER A = -11: B = 11 M = A: R = F(А) t = a WHILE T < B IF F(T) >= R THEN M = T R = F(T) END IF t = t + 2 NEXT T PRINT M FUNCTION F(x) F = -2*(x+2)*(x-6) END FUNCTION | 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. |
| Си++ | Алгоритмический |
#include <iostream> using namespace std; int F(int x) { return -2*(x+2)*(x-6); } int main() { int a, b, t, M, R; a = -11; b = 11; M = a; R = F(a); t=a; while (t < b) { if (F(t) >= R) { M = t; R = F(t); } t=t+2; } cout « M « endl; } | алг нач цел a, b, t, M, R a := -11; b := 11 M := a; R := F(a) t:=a нц пока t < b если F(t) >= R то M := t; R := F(t) все t:=t+2 кц вывод M кон алг цел F(цел x) нач знач := -2*(x+2)*(x-6) кон |
| Python | |
def f(x): return -2*(x+2)*(x-6) a = -11 b = 11 M = a R = F(a) t = a while t < b: if (f(t) >= R): M = t R = f(t); t += 2 print(M)
| |
1. Алгоритм ищет такое нечетное t, при котором F(t) принимает наибольшее значение на отрезке от a до b.
2. график функции – парабола, ветви которой направлены вниз, она принимает наибольшее значение в вершине или на одном из концов отрезка.
3. Найдем абсциссу вершины:
4. Так как t всегда увеличивается на 2 (t:=t+2), оно всегда остаётся нечётным. Найденная вершина — чётное число. Следовательно, надо смотреть ближайшие нечётные значения t: 1 и 3. F(1) = F(3).
Т. к. имеем условие F(t) >= R, запоминается номер последнего элемента, равного максимуму. Ответ: 3.

