В программе описан одномерный целочисленный массив с индексами от 0 до 10. Ниже представлен записанный на разных языках программирования,фрагмент одной и той же программы, обрабатывающей данный массив:
| Бейсик | Паскаль |
|---|---|
s=0 n = 10 FOR i = 0 TO n IF A(n − i)-A(i) > A(i) THEN s = s + A(i) END IF NEXT i | s := 0; n := 10; for i:=0 to n do begin if A[n - i] - A[i] > A[i] then s := s + A[i]; end; |
| Си++ | Алгоритмический язык |
s = 0; n = 10; for (i = 0; i <= n; i++ ) { if(A[n - i]-A[i] > A[i]) { s = s+ A[i]; } } | s := 0 n:=10 нц для i от 0 до n если A[n - i] - A[i] > A[i] то s := s + A[i] все кц |
| Python | |
s = 0 n = 10 for i in range(0, n+1): if A[n - i]-A[i] > A[i]: s = s+ A[i] | |
В начале выполнения этого фрагмента в массиве находились числа 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, т. е. A[0] = 0, A[1] = 10 и т. д. Чему будет равно значение переменной s после выполнения данной программы?
Цикл выполняется, пока разность A[n − i] − A[i] больше, чем A[i]. При i=0, 1, 2, 3 получаем:
i=0: A[10] − A[0] = 100 − 0 > A[0], s:=0 + 0 = 0;
i=1: A[9] − A[1] = 90 − 10 > A[1], s:=0 + 10 = 10;
i=2: A[8] − A[2] = 80 − 20 > A[2], s:=10 + 20 = 30;
i=3: A[7] − A[3] = 70 − 30 > A[3], s:=30 + 30 = 60.
Условие A[n − i] − A[i] > A[i] перестанет выполняться на пятом шаге, когда 60 − 40 > 40 — неверно. Таким образом, присваивание s := s + A[i] выполнится для первых четырех элементов. После выполнения программы получим s = 60.

