Какое число будет напечатано в результате работы следующей программы? Для Вашего удобства программа приведена на пяти языках программирования.
| Бейсик | Python |
|---|---|
DIM A, B, T, M, R AS INTEGER A = −20: B = 20 M = 0 : R = F(A) FOR T = A TO B IF F(T) < R THEN M = 0 R = F(T) END IF IF F(T) = R THEN M = M + 1 END IF NEXT T PRINT M+R
FUNCTION F(x) F=abs(abs(x+3)+abs(x–7)–8)+2 END FUNCTION
| def F(x): return(abs(abs(x+3)+abs(x–7)–8)+2)
a = −20 b = 20 M = 0 R = F(a) for t in range(a,b+1): if F(t) < R: M = 0 R = F(t) if F(t) == R: M += 1 print(M+R)
|
| Паскаль | Алгоритмический язык |
var a, b, t, M, R: integer;
function F(x: integer): integer; begin f:=abs(abs(x+3)+abs(x–7)–8)+2; end;
begin a := −20; b := 20; M := 0; R:= F(a) for t := a to b do begin if F(t) < R then begin M := 0; R := F(t); end; if F(t) = R then begin M := M + 1; end; end; write(M+R); end.
| алг нач цел a, b, t, M, R a := −20; b := 20 M := 0; R := F(a) нц для t от a до b если F(t) < R то M := 0; R := F(t) все если F(t) = R то M := M + 1 все кц вывод M + R кон
алг цел f(цел x) нач знач:=abs(abs(x+3)+abs(x–7)–8)+2 кон
|
| С++ | |
#include <iostream> using namespace std; long f(int x) { return (abs(abs(x+3)+abs(x–7)–8)+2); }
int main() { int a, b, t, M, R; a = −20; b = 20; M = 0; R = F(a); for (t = a; t <=b; ++t) { if (F(t) < R) { M = 0; R = F(t); } if (F(t) == R) { M = M + 1; } } cout << M + R; return 0; }
| |
1. Алгоритм предназначен для поиска наименьшего значения функции F(t) на отрезке от a до b. В переменной M накапливается количество случаев, когда текущее значение R равно F(t), если условие F(t) < R не выполняется, иначе переменная M обнуляется.
2. Заметим, что график функции симметричен относительно оси Oy. Первая точка, в которой график принимает наименьшее значение — (−3; 4). После этой точки график представляет собой прямую до точки (7, 4), а, значит, к переменой M 11 раз прибавится единица. Таким образом, алгоритм выведет на экран число 11 + 4 = 15.
Ответ: 15.

