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

