Представленный ниже на пяти языках программирования фрагмент программы обрабатывает элементы одномерного целочисленного массива A с индексами от 0 до 10. Перед началом выполнения данного фрагмента эти элементы массива имели значения 4, 5, 6, 3, 5, 6, 2, 5, 8, 3, 4 (т. е. A[0] = 4, A[1] = 5, …, A[10] = 4). Определите значение переменной s после выполнения фрагмента.
| Бейсик | Python |
|---|---|
s = 0 FOR k = 1 TO 9 IF 2*A(k) < A(k-1)+A(k+1) THEN s = s + A(k) A(k) = 2 * A(k) END IF NEXT k
| s = 0 for k in range(1,10): if 2*A[k] < A[k-1]+A[k+1]: s = s + A[k] A[k] = 2 * A[k]
|
| Паскаль | Алгоритмический язык |
s := 0; for k:=1 to 9 do begin if 2*A[k] < A[k-1]+A[k+1] then begin s := s + A[k]; A[k] := 2 * A[k]; end; end;
| s := 0 нц для k от 1 до 9 если 2*A[k] < A[k-1]+A[k+1] то s := s + A[k] A[k] := 2 * A[k] все кц |
| С++ | |
s = 0; for (k = 1; k <= 9; ++k) { if (2*A[k] < A[k-1]+A[k+1]) { s = s + A[k]; A[k] = 2 * A[k]; } } | |
Данный алгоритм удваивает значение текущего элемента массива, если удвоенное значение текущего элемента массива меньше, чем сумма двух соседних элементов, при этом в переменной s накапливается значение текущего элемента массива.
Изначальный порядок значений: 4, 5, 6, 3, 5, 6, 2, 5, 8, 3, 4.
Первое изменение элементов: 4, 5, 6, 6, 5, 6, 2, 5, 8, 3, 4. Теперь s = 3.
Второе изменение элементов: 4, 5, 6, 6, 10, 6, 2, 5, 8, 3, 4. Теперь s = 8.
Третье изменение элементов: 4, 5, 6, 6, 10, 6, 4, 5, 8, 3, 4. Теперь s = 10.
Четвёртое изменение элементов: 4, 5, 6, 6, 10, 6, 4, 10, 8, 3, 4. Теперь s = 15.
Последнее изменение элементов: 4, 5, 6, 6, 10, 6, 4, 10, 8, 6, 4. Теперь s = 18.
Ответ: 18.

